Essbase-Formeloptimierung

Um die Verarbeitung von Essbase Block Storage-Formeln für Berechnungen und Abfragen zu optimieren, können Sie Formeln vermeiden, indem Sie Konsolidierung statt Berechnung verwenden, wenn möglich einfachere Formeln verwenden, Schritte zur Optimierung der Performance für komplexe Formeln ausführen oder in den Hybridmodus wechseln.

Sie können die Berechnungsperformance erheblich verbessern, indem Sie Formeln in der Cube-Modellstruktur sorgfältig verwenden. Beispiel: Sie können eine verbesserte Berechnungsperformance erzielen, indem Sie Formeln für Elemente in der Datenbank-Outline platzieren, anstatt die Formeln in einem Berechnungsskript zu platzieren. Siehe Formeln für Block Storage-Cubes entwickeln.

In den folgenden Abschnitten wird beschrieben, wie Formelprobleme behandelt werden, die sich auf die Berechnungsperformance im Nicht-Hybridmodus auswirken.

Informationen zur Optimierung des Hybridmodus finden Sie stattdessen unter Hybridmodus für schnelle analytische Verarbeitung.

Essbase-Elementkonsolidierung

Die Verwendung der Cube-Modellstruktur zum Rollup von Essbase-Datenwerten ist effizienter als die Verwendung einer Formel zur Berechnung.

Beispiel: Die Konsolidierung der Elemente 100-10, 100-20 und 100-30 in Element 100, wie unten gezeigt, ist effizienter als die Anwendung der folgenden Formel auf Element 100:

100-10 + 100-20 + 100-30

Abbildung 34-1: Konsolidierungsbeispiel


Diese Abbildung zeigt einen Umriss, in dem die Elemente 100-10, 100-20 und 100-30 in Element 100 konsolidiert werden.

Siehe Beispiele für die Elementkonsolidierung.

Einfache Essbase-Elementformeln

Wenn eine Essbase-Formel einfach ist, wirkt sich dies auf die Performance der Block Storage-Berechnung aus, die geringer ist als bei komplexen Formeln. Die Blockgröße ist auch ein Leistungsfaktor. Einfachere Formeln sind Formeln, die keine dimensionsübergreifenden Referenzen, Bereichsfunktionen, Finanzfunktionen oder Beziehungsfunktionen verwenden.

Wenn Sie eine einfache Formel verwenden und die Blockgröße nicht ungewöhnlich groß ist, können Sie die Formel auf einem Element einer dünn besetzten oder dicht besetzten Dimension platzieren, ohne die Berechnungsperformance erheblich zu beeinträchtigen. Je größer die Blockgröße, desto mehr Auswirkungen haben einfache Formeln auf die Berechnungsperformance.

Eine einfache Formel ist beispielsweise ein Verhältnis oder ein Prozentsatz und erfüllt die folgenden Anforderungen:

  • Verweist nicht auf Werte aus einer anderen Dimension (Sparse oder Dense). Beispiel: Eine einfache Formel kann nicht auf "Produkt -> Jan" verweisen.

  • Verwendet keine Bereichsfunktionen. Beispiel: Eine einfache Formel kann @AVGRANGE, @MAXRANGE, @MINRANGE oder @SUMRANGE nicht verwenden.

  • Verwende keine Beziehungs- oder Finanzfunktionen. Beispiel: Eine einfache Formel kann @ANCESTVAL, @NEXT, @PARENTVAL, @SHIFT, @ACCUM oder @GROWTH nicht verwenden.

Referenzmaterial

Informationen zur Beziehung zwischen Blockgröße und Berechnungsperformance finden Sie unter Blockgröße und Blockdichte.

Informationen dazu, wie sich Formeln auf die Berechnungsperformance auswirken, finden Sie unter Berechnung nach unten und Berechnung nach oben.

Bereichs- und Finanzfunktionen

Beziehungsfunktionen

Dimensionsübergreifender Operator

Komplexe Essbase-Elementformeln

Wenn eine Essbase-Formel komplex ist, wirkt sich dies mehr auf die Performance der Block Storage-Berechnung aus als auf einfachere Formeln. Um komplexe Formeln zu optimieren, wenden Sie sie in dichten Dimensionen an, erhöhen Sie die Dichte, und verwenden Sie FIX, um den Geltungsbereich einzugrenzen.

Wenn Sie eine komplexe Formel verwenden, können Sie die Performance verbessern, indem Sie die folgenden Richtlinien anwenden:

Eine komplexe Formel erfüllt eine der folgenden Anforderungen:

  • Verweist auf ein oder mehrere Elemente in einer anderen Dimension (dünn oder dicht besetzt); Beispiel: Produkt -> Jan.

  • Verwendet eine oder mehrere Bereichsfunktionen, beispielsweise @AVGRANGE, @MAXRANGE, @MINRANGE oder @SUMRANGE.

  • Verwendet Beziehungen oder Finanzfunktionen, beispielsweise @ANCESTVAL, @NEXT, @PARENTVAL, @SHIFT, @ACCUM oder @GROWTH.

Bei Anwendung auf dünn besetzte Dimensionselemente erstellen komplexe Formeln mehr Berechnungs-Overhead und damit eine langsame Performance. Dieses Problem tritt auf, da für das Vorhandensein komplexer Formeln Essbase Berechnungen für alle möglichen und alle vorhandenen Datenblöcke ausführen muss, die sich auf das Element mit der komplexen Formel beziehen. Das Vorhandensein einer Beziehung oder Finanzfunktion für ein dünn besiedeltes Dimensionselement führt dazu, dass Essbase Berechnungen für alle Blöcke ausführt, die sowohl möglich als auch vorhanden sind. Dadurch wird der Overhead noch erhöht.

Eine komplexe Formel, die eine Beziehung oder Finanzfunktion enthält, erzeugt eine höhere Gemeinkostenerhöhung als eine komplexe Formel, die keine Beziehung oder Finanzfunktion enthält.

Zwei Beispiele veranschaulichen den Overhead komplexer Formeln:

  • Wenn der Cube 90 vorhandene Datenblöcke und 100 potenzielle Datenblöcke enthält, ist der Overhead für komplexe Formeln nicht groß, nicht mehr als 10 zusätzliche Blöcke zum Lesen und Schreiben von Werten.

  • Wenn der Cube 10 vorhandene Datenblöcke und 100 potenzielle Datenblöcke enthält, ist der Overhead das Zehnfache dessen, was er ohne die komplexe Formel wäre (abhängig von der Modellstruktur und anderen Faktoren), bis zu 90 zusätzliche Blöcke zum Lesen und Schreiben.

In allen Fällen gilt: Je geringer das Verhältnis vorhandener Datenblöcke zu möglichen Datenblöcken ist, desto höher ist der Overhead für die Berechnungsperformance und desto langsamer ist die Performance.

Referenzmaterial

Informationen zur Beziehung zwischen Blockgröße und Berechnungsperformance finden Sie unter Blockgröße und Blockdichte.

Informationen dazu, wie sich Formeln auf die Berechnungsperformance auswirken, finden Sie unter Berechnung nach unten und Berechnung nach oben.

Bereichs- und Finanzfunktionen

Beziehungsfunktionen

Formeln für dünn besetzte Dimensionen in großen Umrissen

Um die Berechnung komplexer Formeln für dünn besetzte Dimensionen in großen Essbase Block Storage-Cube-Modellstrukturen zu optimieren, können Sie eine Bottom-up-Berechnung der Formeln erzwingen.

Mit dem Berechnungsbefehl SET FRMLBOTTOMUP können Sie die Berechnung von Formeln in dünn besetzten Dimensionen in großen Datenbank-Outlines optimieren. Mit diesem Befehl können Sie eine Bottom-up-Berechnung für dünn besetzte Elementformeln erzwingen, die andernfalls von oben nach unten berechnet würden. Siehe Bottom-Up- und Top-Down-Berechnung.

Das Erzwingen einer Bottom-up-Berechnung für eine Top-down-Formel ermöglicht eine effizientere Verwendung der Befehle CALC ALL und CALC DIM. Lesen Sie die Erläuterungen zum Berechnungsbefehl SET FRMLBOTTOMUP und zur Konfigurationseinstellung CALCOPTFRMLBOTTOMUP.

Konstantenwerte, die Elementen in einer dünn besetzten Dimension zugewiesen sind

Wenn Sie einem Element in einer Sparse-Dimension eine Konstante zuweisen, erstellt Essbase automatisch einen Datenblock für jede Kombination von Sparse-Dimensionselementen, die das Element enthält. Um die Blockerstellung zu begrenzen, können Sie FIX verwenden.

Beispiel: Ein Element oder eine Berechnungsskriptformel enthält den folgenden Ausdruck:

California = 120;

In dieser Formel ist Kalifornien ein Element in einer dünn besetzten Dimension und 120 ein konstanter Wert. Essbase erstellt automatisch alle möglichen Datenblöcke für Kalifornien und weist allen Datenzellen den Wert 120 zu. Es können viele tausend Datenblöcke erstellt werden. Um die Leistung zu verbessern, erstellen Sie eine Formel, die keine unnötigen Werte erstellt.

Um Konstanten in einer dünn besetzten Dimension nur den Schnittmengen zuzuweisen, die einen Wert erfordern, verwenden Sie FIX wie im folgenden Beispiel:

FIX(Colas,Misc,Actual)
   California = 120;
ENDFIX

In diesem Beispiel ist "Colas" ein Element der dünn besetzten Dimension "Product", "Actual" ist ein Element der dicht besetzten Dimension "Szenario", und "Sonstiges" ist ein Element der dicht besetzten Dimension "Measures". Der Wert 120 wird jeder Schnittmenge von Kalifornien (in der Market-Dimension), Ist (in der Scenario-Dimension), Sonstiges (in der Measures-Dimension), Colas (in der Product-Dimension) und jedem Element in der Year-Dimension zugewiesen, da im Skript kein bestimmtes Element von Year angegeben ist.

Da Sample Basic nur zwei dünn besetzte Dimensionen enthält, wirkt sich dieses Beispiel nur auf einen Block aus. Wenn weitere Sparse-Dimensionen vorhanden waren, stellt Essbase Datenblöcke für alle Kombinationen der Sparse-Dimensionen mit Kalifornien und Colas sicher und erstellt bei Bedarf Blöcke. In den neuen Blöcken setzt Essbase Kennzahlen und Szenariowerte (mit Ausnahme derjenigen, denen der Wert 120 zugewiesen ist) auf #MISSING.

Nicht konstante Werte, die Elementen in einer dünn besetzten Dimension zugewiesen sind

Um eine ungewollte Erstellung von Blöcken vorübergehend zu verhindern, wenn Sie Elementen einer dünn besetzten Dimension nicht konstante Werte zuweisen, können Sie den Befehl SET CREATEBLOCKONEQ OFF in einem Essbase-Berechnungsskript verwenden.

Wenn Sie Elementen einer dünn besetzten Dimension nicht konstante Werte zuweisen, werden Blöcke basierend auf der Einstellung "Blöcke auf Gleichungen erstellen" erstellt. Die Einstellung "Blöcke auf Gleichungen erstellen" wird auf Datenbankebene als Datenbankeigenschaft definiert. Siehe Nicht konstante Werte.

In Berechnungsskripten können Sie die Einstellung "Blocks für Gleichungen erstellen" vorübergehend außer Kraft setzen. Berücksichtigen Sie die Auswirkungen der folgenden Berechnung, wenn West keinen Wert hat und "Blöcke für Gleichungen erstellen" aktiviert ist:

West = California + 120;

Nicht benötigte Blöcke können für alle Schnittmengen von Sparse-Elementen mit West erstellt werden, auch wenn der entsprechende Blockwert #MISSING für alle untergeordneten Elemente von West ist. Gerade in einer großen Datenbank erfordert die Erstellung und Verarbeitung nicht benötigter Blöcke zusätzliche Verarbeitungszeit.

Um die Erstellung von Blöcken zu steuern, wenn Sie Elementen einer dünn besetzten Dimension nicht konstante Werte zuweisen, verwenden Sie den Berechnungsbefehl SET CREATEBLOCKONEQ ON | OFF, wie im folgenden Skript dargestellt:

FIX (Colas);
   SET CREATEBLOCKONEQ OFF
   West = California + 120;
   SET CREATEBLOCKONEQ ON
   East = “New York” + 100;
ENDFIX

Da die Einstellung "Block bei Gleichung erstellen" am Anfang des Skripts deaktiviert ist, werden Westblöcke nur erstellt, wenn Werte für die untergeordneten Elemente von West vorhanden sind. Da später die Einstellung "Block bei Gleichung erstellen" aktiviert ist, werden alle Blöcke für Ost erstellt.

Hinweis:

Die Verwendung von SET CREATEBLOCKONEQ wirkt sich nur auf die Erstellung von Blöcken während der Ausführung des Berechnungsskripts aus, das diesen Befehl enthält. Mit diesem Befehl wird die allgemeine Datenbankeinstellung für "Blöcke auf Gleichungen erstellen" nicht geändert.

Dimensionsübergreifende Operatoren in Elementformeln

Verwenden Sie beim Entwerfen von Essbase Block Storage-Elementformeln Vorsicht, wenn Sie einen dimensionsübergreifenden Operator ( -> ) auf der linken Seite einer Gleichung oder in Gleichungen für dicht besetzte Dimensionen verwenden.

Linke Seite einer Gleichung

Für eine schnellere Berechnungsskriptleistung verwenden Sie FIX im Berechnungsskript, um die Verwendung einer Formel anstelle einer Formel zu kennzeichnen, die einen dimensionsübergreifenden Operator auf der linken Seite einer Gleichung enthält.

Beispiel: Sie möchten die Werte für "Jan -> Sales" in "Sample.Basic" um 5% erhöhen. Um die Performance zu verbessern, indem nur die relevanten Kombinationen von Elementen berechnet werden, verwenden Sie den FIX-Befehl:

FIX(Jan)
   Sales = Sales * .05;
ENDFIX

Mit dem FIX-Befehl berechnet Essbase die Formel nur für angegebene Elementkombinationen, in diesem Beispiel für Kombinationen, die Jan enthalten.

Vergleichen Sie diese Technik mit dem langsameren interdimensionalen Operatoransatz. Im vorherigen Beispiel platzieren Sie die folgende Formel im Sales-Element im Datenbank-Outline:

Sales(Sales -> Jan = Sales -> Jan * .05;)

Wenn Essbase die Datenbank durchläuft, berechnet es die Formel für jede Elementkombination, die ein Element aus der als Zeit getaggten Dimension (Jan, Feb, Mar usw.) enthält, obwohl nur Kombinationen vom Januar berechnet werden müssen.

Siehe FIX-Befehl verwenden.

Gleichungen in einer dicht besetzten Dimension

Wenn Sie einen dimensionsübergreifenden Operator in einer Gleichung in einer dicht besetzten Dimension verwenden, erstellt Essbase die erforderlichen Blöcke nicht automatisch, wenn beide Bedingungen zutreffen:

  • Die resultierenden Werte stammen aus einer dicht besetzten Dimension.

  • Der Operand oder die Operanden stammen aus einer dünn besetzten Dimension.

Mit den folgenden Techniken können Sie die Blöcke erstellen und Performanceprobleme vermeiden.

  • Stellen Sie sicher, dass die Ergebniselemente aus einer dünn besetzten Dimension und nicht aus einer dicht besetzten Dimension stammen. In diesem Beispiel stammt das Ergebniselement "Budget" aus einer Sparse-Dimension:

    FIX(Sales)
        Budget = Actual * 1.1;
    ENDFIX
    FIX(Expenses)
        Budget = Actual *  .95;
    ENDFIX
  • Verwenden Sie den Berechnungsbefehl DATACOPY, um die erforderlichen Blöcke zu erstellen und dann zu berechnen. Siehe Vorhandene Blöcke mit DATACOPY kopieren.

  • Verwenden Sie eine Elementformel, die dicht besetzte Elementgleichungen enthält:

    FIX(Sales, Expenses)
    Budget (Sales = Sales -> Actual * 1.1;
    Expenses = Expenses -> Actual * .95;)
    ENDFIX

Formelausführungsebenen verwalten

Sie können ein übermäßiges Schleifen von rekursiven Essbase-Formeln verhindern, indem Sie CALCLIMITFORMULARECURSION konfigurieren.

Formeln in einem Block Storage Outline können Abhängigkeiten voneinander aufweisen, sodass sie eine verschachtelte Ausführung von Formeln in einem oder mehreren Blöcken verursachen. Diese Formeln werden als rekursive Formeln bezeichnet. Manchmal führen rekursive Formeln zu großen oder nicht endenden Schleifen, die zu einer anormalen Beendigung des Servers führen.

Um eine anormale Beendigung zu vermeiden, können Sie die Konfigurationseinstellung CALCLIMITFORMULARECURSION verwenden, um eine Formelausführung zu stoppen, die über eine Standardanzahl von Ausführungsebenen hinausgeht.