Bedingungstests
Sie können Essbase-Formeln definieren, die einen bedingten Test oder eine Reihe bedingter Tests verwenden, um den Berechnungsfluss zu steuern. In Verbindung mit den Ablaufbefehlen können Sie boolesche Funktionen verwenden, die TRUE oder FALSE (1 bzw. 0) basierend auf dem Ergebnis des Tests zurückgeben.
Die Befehle IF und ENDIF definieren einen Bedingungsblock. Die Formeln zwischen IF- und ENDIF-Befehlen werden nur ausgeführt, wenn der Test TRUE (1) zurückgibt. Wenn der Test FALSE (0) zurückgibt, können Sie mit den Befehlen ELSE und ELSEIF alternative Aktionen angeben. Die Formeln nach jedem ELSE-Befehl werden nur ausgeführt, wenn der vorherige Test FALSE (0) zurückgibt. Bedingungen, die jedem ELSEIF-Befehl folgen, werden nur getestet, wenn der vorherige IF-Befehl FALSE (0) zurückgibt.
Wenn Sie eine bedingte Formel in einem Berechnungsskript verwenden, schließen Sie sie in Klammern ein, und verknüpfen Sie sie mit einem Element in der Datenbank-Outline, wie in den Beispielen in diesem Abschnitt gezeigt.
In Verbindung mit einem IF-Befehl können Sie Funktionen verwenden, die TRUE oder FALSE (1 bzw. 0) basierend auf dem Ergebnis eines bedingten Tests zurückgeben. Diese Funktionen werden als boolesche Funktionen bezeichnet.
Verwenden Sie boolesche Funktionen, um festzulegen, welche Formel verwendet werden soll. Die Entscheidung basiert auf den Eigenschaften der aktuellen Elementkombination. Beispiel: Um eine bestimmte Berechnung auf die Elemente in der Product-Dimension zu beschränken, die Eingabedaten enthalten, stellen Sie der Berechnung einen IF-Test basierend auf @ISLEV(Product,0) vor.
Wenn einer der Funktionsparameter ein dimensionsübergreifendes Element ist, wie z.B. @ISMBR(Sales -> Budget), müssen alle Teile des dimensionsübergreifenden Elements mit den Eigenschaften der aktuellen Zelle übereinstimmen, um den Wert TRUE (1) zurückzugeben.
Die folgenden booleschen Funktionen geben Bedingungen an:
Tabelle 17-3: Liste der booleschen Funktionen, die Bedingungen testen
| Funktion | Faktor |
|---|---|
|
Aktuelles Element hat ein angegebenes Konten-Tag (z.B. ein Aufwands-Tag) |
|
|
Aktuelles Element ist ein Vorgänger des angegebenen Elements |
|
|
Aktuelles Element ist ein Vorgänger des angegebenen Elements, oder das angegebene Element selbst |
|
|
Aktuelles Element ist ein untergeordnetes Objekt des angegebenen Elements |
|
|
Aktuelles Element ist ein untergeordnetes Objekt des angegebenen Elements oder des angegebenen Elements selbst |
|
|
Das aktuelle Element ist ein Nachkomme des angegebenen Elements |
|
|
Das aktuelle Element ist ein Nachkomme des angegebenen Elements oder das angegebene Element selbst |
|
|
Aktuelles Element der angegebenen Dimension ist in der angegebenen Generation |
|
|
Aktuelles Element der angegebenen Dimension befindet sich in der angegebenen Ebene |
|
|
Aktuelles Element stimmt mit einem der angegebenen Elemente überein |
|
|
Aktuelles Element ist dem angegebenen Element übergeordnetes Element |
|
|
Aktuelles Element ist das übergeordnete Objekt des angegebenen Elements oder des angegebenen Elements selbst |
|
|
Aktuelles Element (dieselbe Dimension wie das angegebene Element) befindet sich in derselben Generation wie das angegebene Element |
|
|
Aktuelles Element (der gleichen Dimension wie das angegebene Element) ist auf derselben Ebene wie das angegebene Element |
|
|
Das aktuelle Element ist ein gleichgeordnetes Objekt des angegebenen Elements |
|
|
Das aktuelle Element ist ein gleichgeordnetes Element des angegebenen Elements oder das angegebene Element selbst |
|
|
Für das aktuelle Element der angegebenen Dimension ist ein angegebenes UDA vorhanden |
Wenn Sie Formeln im Datenbank-Outline platzieren, können Sie nur die Befehle IF, ELSE, ELSEIF und ENDIF sowie boolesche Funktionen verwenden, um den Fluss der Berechnungen zu steuern. Sie können zusätzliche Steuerbefehle in einem Berechnungsskript verwenden.
Informationen zum Entwickeln von Berechnungsskripten und zum Steuern, wie Essbase eine Datenbank berechnet, finden Sie unter Berechnungsskripte für Block Storage-Cubes entwickeln.