Formeln in Berechnungsskripten

Essbase-Formeln berechnen mathematische und positionale Beziehungen zwischen Elementen in einer Datenbankmodellstruktur. Sie können sie auf Elemente in der Gliederung anwenden und/oder in Kalkulationsskripten verwenden, um Ihre Berechnungen streng zu steuern.

Wenn Sie Essbase-Formeln in Berechnungsskripten definieren, haben diese Vorrang vor allen Formeln, die auf Elemente in der Cube-Modellstruktur angewendet werden. Wenn Sie Formeln auf diese Weise verwenden, erhalten Ihre Batchberechnungen mehr Flexibilität über die in der Cube-Modellstruktur codierten Beziehungen hinaus.

Sie können Formeln zur Berechnung mit Basisgleichungen, Bedingungsgleichungen und voneinander abhängigen Formeln erstellen.

In einem Essbase-Berechnungsskript können Sie beide Vorgänge ausführen:

  • Vorhandene Elementformel in der Cube-Modellstruktur berechnen

  • Definieren Sie eine neue Formel, die für die Dauer der Ausführung des Berechnungsskripts gültig ist

Um eine vorhandene Formel zu berechnen, die auf ein Element in der Gliederung angewendet wird, verwenden Sie den Elementnamen gefolgt von einem Semikolon (;). Beispiel: Der folgende Befehl in einem Berechnungsskript berechnet die Formel, die auf das Abweichungselement in der Gliederung angewendet wird:

Variance;

Um Werte zu überschreiben, die sich aus der Modellstrukturberechnung ergeben, können Sie eine Formel manuell im Berechnungsskript anwenden. Beispiel: Die folgende Formel in einem Berechnungsskript durchläuft den Cube, fügt die Werte in den Elementen "Entgeltabrechnung", "Marketing" und "Sonstiges" hinzu und fügt das Ergebnis in das Element "Aufwendungen" ein. Diese Formel überschreibt alle Formeln, die dem Element "Aufwand" in der Gliederung zugeordnet sind:

Expenses = Payroll + Marketing + Misc;

Hinweis:

Sie können keine Formeln auf gemeinsame Elemente oder nur Label-Elemente anwenden.

Siehe auch: Formeln für Block Storage-Cubes entwickeln.

Allgemeine Gleichungen in Essbase-Berechnungsskripten

In Essbase-Berechnungsskripten verwenden Sie Gleichungen, um Cube-Modellstrukturelementen Werte zuzuweisen. Die Zuweisung dauert die Dauer der Ausführung des Berechnungsskripts.

Die Syntax für eine Gleichung in einem Essbase-Berechnungsskript lautet:

member = mathematical_expression;

Element ist ein Elementname aus der Gliederung, und mathematical_expression ist ein beliebiger gültiger mathematischer Ausdruck.

Essbase wertet den Ausdruck aus und weist den Wert dem angegebenen Element zu.

Im folgenden Beispiel durchläuft Essbase die Datenbank, subtrahiert die Werte in COGS von den Werten in Sales und platziert das Ergebnis in Margin:

Margin = Sales - COGS;

In diesem Beispiel durchläuft Essbase die Datenbank, subtrahiert die Werte in Cost von den Werten in Retail, berechnet die resultierenden Werte als Prozentsatz der Werte in Retail und platziert die Ergebnisse in Markup:

Markup = (Retail - Cost) % Retail;

Sie können auch die logischen Operatoren > (größer als) und < (kleiner als) in Gleichungen verwenden.

Wenn der Umsatz im Februar größer als der Umsatz im Januar ist, ergibt das Kennzeichen "Umsatzsteigerung" im folgenden Beispiel den Wert 1. Bei "Falsch" lautet das Ergebnis 0:

Sales Increase Flag = Sales -> Feb > Sales -> Jan;

Bedingte Gleichungen in Essbase-Berechnungsskripten

Sie können bedingte Gleichungen in Essbase-Berechnungsskriptformeln verwenden, um die If/else-Logik zu definieren und den Ablauf von Ereignissen während der Berechnung zu steuern.

Wenn Sie eine IF-Anweisung als Teil einer Elementformel in einem Berechnungsskript verwenden, müssen Sie:

  • IF-Anweisung mit einem einzelnen Element verknüpfen

  • IF-Anweisung in Klammern setzen

Im folgenden Beispiel wird die gesamte IF…ENDIF-Anweisung in Klammern eingeschlossen und mit dem Profit-Element Profit (IF(...)...) verknüpft:

Profit
(IF (Sales > 100)
   Profit = (Sales - COGS) * 2;
ELSE
   Profit = (Sales - COGS) * 1.5;
ENDIF;)

Essbase durchläuft die Datenbank und führt die folgenden Berechnungen aus:

  1. Die IF-Anweisung prüft, ob der Wert von "Sales" für die aktuelle Elementkombination größer als 100 ist.

  2. Wenn der Umsatz größer als 100 ist, subtrahiert Essbase den Wert in COGS vom Wert in Sales, multipliziert die Differenz mit 2 und platziert das Ergebnis in Profit.

  3. Wenn Sales kleiner oder gleich 100 ist, subtrahiert Essbase den Wert in COGS vom Wert in Sales, multipliziert die Differenz mit 1,5 und platziert das Ergebnis in Profit.

Weitere Informationen zu bedingten Befehlen und zur Steuerung des Ablaufs von Berechnungsskripten finden Sie unter Berechnungsbefehlsgruppen.

Interdependente Formeln in Essbase-Berechnungsskripten

Wie bei Formeln in der Modellstruktur berechnet eine Formel in einem Berechnungsskript mathematische Beziehungen zwischen Elementen in der Essbase-Cube-Modellstruktur.

Formeln werden als unabhängig betrachtet, wenn ihre Bewertungen vom Wert anderer Elemente derselben Dimension abhängen.

Ein gutes Beispiel für eine voneinander abhängige Formel in Essbase ist eine Cashflow-Bewertung, bei der das Anfangsbestand vom Abschlussbestand des Vormonats abhängt.

Wenn Sie eine voneinander abhängige Formel in einem Berechnungsskript verwenden, beachten Sie, dass dieselben Regeln gelten wie für die IF-Anweisung. Sie müssen:

  • Formel einem einzelnen Element zuordnen

  • Formel in Klammern setzen

Im folgenden Beispiel wird die gesamte voneinander abhängige Formel in Klammern eingeschlossen und dem Element "Eröffnungsbestand" zugeordnet:

"Opening Inventory"
(IF(NOT @ISMBR (Jan))
   "Opening Inventory" = @PRIOR("Ending Inventory");
ENDIF;)
"Ending Inventory" = "Opening Inventory" - Sales + Additions;

Berechnungsskriptformeln und Status für intelligente Berechnung

Formeln für dünn besetzte Dimensionselemente, die Beziehungs- oder Finanzfunktionen enthalten, führen immer zu einer Neuberechnung, selbst wenn Essbase Intelligente Berechnung die Blöcke als bereinigt markiert.

Angenommen, Sie haben eine Formel für ein Element einer dünn besetzten Dimension, und die Formel enthält eine der folgenden Funktionstypen:

  • Beziehung (z.B. @PRIOR oder @NEXT)

  • Finanzen (z.B. @NPV oder @INTEREST)

Essbase berechnet den Datenblock, der die Formel enthält, immer neu, selbst wenn der Block für die Zwecke der intelligenten Berechnung als bereinigt markiert ist.

Siehe Intelligente Berechnung von Datenblöcken und Intelligente Berechnung für Block Storage-Cubes.

Formeln und Dimensionen im Skript gruppieren

Sie können erhebliche Verbesserungen der Berechnungsperformance erzielen, indem Sie Essbase-Elementformeln und -Dimensionen sorgfältig in einem Berechnungsskript gruppieren.

Eine Reihe von Elementformeln berechnen

Wenn Sie Formeln berechnen, achten Sie darauf, die Klammern korrekt zu verwenden.

Im folgenden Beispiel führen falsch platzierte Klammern dazu, dass Essbase zwei Berechnungen durch den Cube durchführt: Einmal die Formeln für die Elemente Qtr1 und Qtr2 berechnen und einmal die Formel für Qtr3 berechnen:

(Qtr1;
Qtr2;)
Qtr3;

Im Gegensatz dazu führen die folgenden Konfigurationen dazu, dass Essbase nur einmal durch den Cube blättern und die Formeln für die Elemente Qtr1, Qtr2 und Qtr3 berechnen:

Qtr1;
Qtr2;
Qtr3;

Oder

(Qtr1;
Qtr2;
Qtr3;)

Entsprechend führen die folgenden Formeln dazu, dass Essbase den Cube einmal durchläuft und beide Formeln in einem Durchlauf berechnet:

Profit = (Sales - COGS) * 1.5;
Market = East + West;

Eine Reihe von Dimensionen berechnen

Bei der Berechnung einer Reihe von Dimensionen können Sie die Performance optimieren, indem Sie die Dimensionen nach Möglichkeit gruppieren.

Beispiel: Die folgende Formel bewirkt, dass Essbase den Cube nur einmal durchläuft:

CALC DIM(Year, Measures);

Im Gegensatz dazu führt die folgende Syntax dazu, dass Essbase den Cube zweimal durchläuft, einmal für jeden CALC DIM-Befehl:

CALC DIM(Year);
CALC DIM(Measures);