Intelligente Berechnung von Datenblöcken

Erfahren Sie, wie dicht besetzte und dünn besetzte Berechnungen, nebenläufige Berechnungen und Mehrfachdurchlaufberechnungen von der Essbase-intelligenten Berechnung verarbeitet werden.

Essbase erstellt einen Datenblock für jede eindeutige Kombination von dünn besetzten Dimensionselementen, vorausgesetzt, für die Kombination ist mindestens ein Datenwert vorhanden. Jeder Datenblock stellt alle dicht besetzten Dimensionselementwerte für diese eindeutige Kombination von dünn besetzten Dimensionselementen dar.

Beispiel: In der Datenbank "Beispielbasis" sind die Dimensionen "Markt" und "Produkt" dünn besetzt. Daher stellt der Datenblock "New York -> Colas" alle Elementwerte in den Dimensionen "Year", "Measures" und "Szenario" für die dünn besetzte Kombination "New York -> Colas" dar.

In den nächsten Abschnitten wird davon ausgegangen, dass Sie mit den Konzepten der oberen Ebene, der Ebene 0 und der Eingabedatenblöcke vertraut sind, wie unter Datenspeicherung in Datenblöcken beschrieben.

Intelligente Berechnung von dicht besetzten Dimensionen

Wenn Sie eine dicht besetzte Dimension berechnen und keinen FIX-Befehl verwenden, berechnet Essbase mindestens einige der Datenwerte in jedem Datenblock in der Datenbank. In Bezug auf den Status Intelligente Berechnung werden Blöcke aus einer dichten Berechnung als bereinigt markiert.

Beispiel: Das folgende Berechnungsskript berechnet die Year-Dimension, die dicht besetzt ist.

SET CLEARUPDATESTATUS AFTER;
CALC DIM(Year);

Da Year dicht besetzt ist, enthält jeder Block im Cube Elemente von Year. Daher berechnet Essbase jeden Block.

Da das Skript dann den Befehl SET CLEARUPDATESTATUS AFTER verwendet, markiert Essbase alle Datenblöcke im Cube als bereinigt.

Intelligente Berechnung von dünn besetzten Dimensionen

Wenn Sie eine Sparse-Dimension berechnen, muss Essbase möglicherweise nicht jeden Datenblock in der Datenbank berechnen. Erfahren Sie, wie sich der Status der bereinigten/dirty Aktualisierung der intelligenten Berechnung auf den Status von Blöcken der Ebene 0 und der oberen Ebene auswirken kann und wie Sie unnötige Berechnungen vermeiden.

Beispiel: Das folgende Berechnungsskript basiert auf der Sample Basic-Datenbank:

SET CLEARUPDATESTATUS AFTER;
CALC DIM(Product);

Dieses Skript berechnet die Product-Dimension, die eine Sparse-Dimension ist. Da {\b Product} geringfügig ist, ist für jedes Element in der Dimension {\b Product} ein Datenblock vorhanden. Beispiel: Für New York -> Colas und für New York -> 100-10 ist ein Datenblock vorhanden.

Effekte Ebene 0

Wenn Sie Daten auf Ebene 0 in den Cube laden, werden die betroffenen Blöcke als "dirty" markiert. Wenn Sie anschließend nur eine dünn besetzte Dimension berechnen, werden die Blöcke der Ebene 0 nicht berechnet und bleiben schmutzig. Wenn Sie nur eine dünn besetzte Dimension oder Dimension neu berechnen, berechnet Essbase Datenblöcke der oberen Ebene neu.

Hinweis:

Essbase berechnet Datenblöcke der Ebene 0, wenn für ein entsprechendes Sparse-Element der Ebene 0 eine Formel angewendet wird.

Der Datenblock New York -> 100-10 ist ein Block der Ebene 0. Er stellt kein übergeordnetes Element in einer Sparse-Dimension dar (Markt oder Produkt). Die Datenwerte für New York -> 100-10 sind Eingabewerte; sie werden in die Datenbank geladen. Daher muss Essbase diesen Datenblock nicht berechnen. Essbase markiert den Datenblock für New York -> 100-10 auch nicht als sauber, obwohl das Skript den Befehl SET CLEARUPDATESTATUS AFTER verwendet.

Effekte auf oberer Ebene

Wenn Essbase eine Sparse-Dimension berechnet, wird ein Datenblock der oberen Ebene neu berechnet, wenn der Block von einem oder mehreren untergeordneten Dirty-Blöcken abhängig ist.

Colas ist ein Element auf übergeordneter Ebene in der Product-Dimension. Essbase muss Werte für Colas berechnen, sodass Essbase diesen Datenblock berechnet. Da das Skript den Befehl SET CLEARUPDATESTATUS AFTER verwendet, markiert Essbase den Datenblock als bereinigt.

Unnötige Berechnung

Sie können unnötige Berechnungen vermeiden, indem Sie mindestens eine dicht besetzte Dimension berechnen. Wenn Sie eine dicht besetzte Dimension ohne Verwendung des FIX-Befehls berechnen, werden Datenwerte in jedem Block berechnet, einschließlich der Blöcke der Ebene 0. Die Blöcke der Ebene 0 werden als sauber markiert.

Intelligente Berechnung und gleichzeitige Berechnungen

Vorsichtsmaßnahmen bei gleichzeitigen Berechnungen treffen, wenn Intelligente Berechnung aktiviert ist. Wenn mehrere Berechnungen versuchen, dieselben Blöcke zu berechnen, berechnet Essbase die Datenblöcke möglicherweise nicht neu, da sie bereits als bereinigt markiert sind.

Im folgenden Beispiel sind "Actual" und "Budget" basierend auf der Datenbank "Sample Basic" Elemente der Dense Scenario-Dimension. Da das Szenario dicht besetzt ist, enthält jeder Block in der Datenbank Ist- und Budgetwerte. Wenn Benutzer 1 das folgende Berechnungsskript ausführt, berechnet Essbase die Istwerte für alle Datenblöcke, die New York darstellen.

SET CLEARUPDATESTATUS AFTER;
FIX("New York", Actual)
   CALC DIM(Product, Year);
ENDFIX

Essbase kennzeichnet die berechneten Datenblöcke als bereinigt, obwohl nicht alle Werte in jedem berechneten Block berechnet wurden. Beispiel: Die Budgetwerte wurden nicht berechnet.

Wenn Benutzer 2 das folgende Berechnungsskript zur Berechnung der Budgetwerte für New York ausführt, berechnet Essbase die angegebenen Blöcke nicht neu, da sie bereits als bereinigt markiert sind. Die Berechnungsergebnisse für das Budget sind nicht korrekt.

SET CLEARUPDATESTATUS AFTER;
FIX("New York", Budget)
   CALC DIM(Product, Year);
ENDFIX

Eine Möglichkeit, dieses Problem zu lösen, besteht darin, die Scenario-Dimension dünn zu machen. Dann sind die Ist- und Budgetwerte in verschiedenen Blöcken; zum Beispiel New York -> Colas -> Actual und New York -> Colas -> Budget. In diesem Fall berechnet das zweite Berechnungsskript den Budgetblock korrekt.

Die Ausführung gleichzeitiger Berechnungen kann eine Erhöhung des Datencache erfordern.

Berechnungen für intelligente Berechnung und Mehrfachpassungen

Essbase-Berechnungsskripte, für die mehrere Durchläufe erforderlich sind, sind in einigen Situationen möglicherweise nicht mit der Verwendung von Intelligent Calculation kompatibel.

Wenn Essbase Datenblöcke bei einem ersten Berechnungsdurchlauf durch eine Datenbank berechnet, werden die Datenblöcke als bereinigt markiert. Wenn Sie versuchen, dieselben Datenblöcke in einem nachfolgenden Durchlauf mit aktivierter intelligenter Berechnung zu berechnen, berechnet Essbase die Datenblöcke nicht neu, da sie bereits als bereinigt markiert sind.

Wenn möglich berechnet Essbase eine Datenbank in einem Berechnungsdurchlauf durch die Datenbank.

Wenn Sie ein Berechnungsskript zur Berechnung einer Datenbank verwenden, hängt die Anzahl der von Essbase ausgeführten Berechnungsdurchläufe vom Berechnungsskript ab.

Beispiel: Angenommen, Essbase berechnet Blöcke bei einem ersten Berechnungsdurchlauf und kennzeichnet sie als sauber. Wenn Sie versuchen, dieselben Blöcke in einem nachfolgenden Durchlauf zu berechnen, während Intelligente Berechnung aktiviert ist, berechnet Essbase die Datenblöcke nicht neu, da sie bereits als bereinigt markiert sind.

Beispiele und Lösungen für Berechnungen mit mehreren Durchgängen

In diesen Beispielen werden Situationen beschrieben, in denen falsche Essbase-Berechnungsergebnisse mit Lösungen zum Abrufen korrekter Ergebnisse generiert werden. Sie basieren auf der Beispieldatenbank "Basic" und gehen davon aus, dass Intelligente Berechnung aktiviert ist.

Beispiel 1: Intelligente Berechnung und Zweiwege

Das folgende Berechnungsskript führt eine Standardberechnung und dann eine zweistufige Berechnung durch:

CALC ALL;
CALC TWOPASS;

Fehler

Essbase berechnet die Dirty-Datenblöcke in der Datenbank und kennzeichnet alle Datenblöcke als bereinigt. Essbase muss dann die Elemente neu berechnen, die in der als Accounts getaggten Dimension als Two-Pass getaggt sind. Essbase berechnet die angegebenen Datenblöcke jedoch nicht neu, da sie bereits als bereinigt markiert sind. Die Berechnungsergebnisse sind nicht korrekt.

Lösung

Sie können die korrekten Ergebnisse berechnen, indem Sie Intelligente Berechnung für die Berechnung mit zwei Durchgängen deaktivieren.

Beispiel 2: SET CLEARUPDATESTATUS und FIX

Dieses Berechnungsskript berechnet Datenwerte für New York. Die Berechnung basiert auf der Product-Dimension:

SET CLEARUPDATESTATUS AFTER;
FIX("New York")
   CALC DIM(Product);
ENDFIX
CALC TWOPASS;

Fehler

Essbase führt die folgenden Prozesse aus:

  1. Essbase durchläuft die Datenbank und berechnet die Dirty-Datenblöcke, die New York darstellen. Die Berechnung basiert auf der Dimension {\b Product}. Daher berechnet Essbase nur die Blöcke, die ein übergeordnetes Element in der Product-Dimension darstellen (z.B. New York -> Colas, New York -> Root Beer und New York -> Fruit Soda), und berechnet dann nur die Aggregationen und Formeln für die Product-Dimension.

  2. Da der Befehl SET CLEARUPDATESTATUS AFTER verwendet wird, markiert Essbase die berechneten Datenblöcke als bereinigt, obwohl nicht alle Datenwerte in jedem berechneten Block berechnet wurden.

  3. Essbase muss die Elemente neu berechnen, die in der als Konten getaggten Dimension als Two-Pass getaggt sind. Einige dieser Datenblöcke sind jedoch bereits als bereinigt aus der Berechnung im vorherigen Schritt markiert. Essbase berechnet die als bereinigt markierten Datenblöcke nicht neu. Die Berechnungsergebnisse sind nicht korrekt.

Lösung

Sie können die korrekten Ergebnisse berechnen, indem Sie Intelligente Berechnung für die Berechnung mit zwei Durchgängen deaktivieren.

Beispiel 3: SET CLEARUPDATESTATUS und zwei CALC DIM-Befehle

Dieses Berechnungsskript basiert die Datenbankberechnung auf den Dimensionen "Product" und "Year". Da zwei CALC DIM-Befehle verwendet werden, führt Essbase zwei Berechnungen durch die Datenbank:

SET CLEARUPDATESTATUS AFTER;
CALC DIM(Product);
CALC DIM(Year);

Fehler

Essbase führt die folgenden Prozesse aus:

  1. Essbase durchläuft die Datenbank, um die Dirty-Datenblöcke zu berechnen. Die Berechnung basiert auf der Dimension {\b Product}, wie in Beispiel 2.

  2. Da der Befehl SET CLEARUPDATESTATUS AFTER verwendet wird, markiert Essbase die berechneten Datenblöcke als bereinigt, obwohl nicht alle Datenwerte in jedem berechneten Block berechnet wurden.

  3. Essbase muss die Datenblöcke neu berechnen. Die Neuberechnung basiert auf der Year-Dimension. Aufgrund der Berechnung im vorherigen Schritt sind einige Datenblöcke jedoch bereits als bereinigt markiert, und Essbase berechnet sie nicht neu. Die Berechnungsergebnisse sind nicht korrekt.

Lösung

Sie können die richtigen Ergebnisse mit einem CALC DIM-Befehl berechnen, um die Dimensionen {\b Product} und {\b Year} zu berechnen. Essbase berechnet beide Dimensionen in einem Berechnungsdurchlauf durch die Datenbank.

Das folgende Berechnungsskript berechnet die richtigen Ergebnisse:

SET CLEARUPDATESTATUS AFTER;
CALC DIM(Product, Year);

Hinweis:

Wenn Sie mehrere Dimensionen in einem CALC DIM-Befehl berechnen, berechnet Essbase die Dimensionen in der Standardberechnungsreihenfolge und nicht in der Reihenfolge, in der Sie sie im Befehl auflisten. Siehe Elementberechnungsreihenfolge.

Beispiel 4: Zwei Berechnungsskripte

Dieses Beispiel berechnet Datenwerte für New York, basiert jedoch auf zwei Dimensionen und verwendet zwei Berechnungsskripte. Das erste Berechnungsskript berechnet die Dimension {\b Product}:

SET CLEARUPDATESTATUS AFTER;
FIX("New York")
   CALC DIM(Product);
ENDFIX

Essbase berechnet die Datenblöcke, die New York enthalten. Da die Berechnung auf der Product-Dimension basiert, berechnet Essbase nur die schmutzigen Blöcke, die ein übergeordnetes Element in der Product-Dimension enthalten (z.B. New York -> Colas, New York -> Root Beer und New York -> Fruit Soda), und berechnet nur die Aggregationen und Formeln für die Product-Dimension.

Aufgrund des Befehls CLEARUPDATESTATUS AFTER kennzeichnet Essbase die berechneten Datenblöcke als bereinigt, obwohl nicht alle Datenwerte in jedem berechneten Block berechnet wurden.

Das zweite Berechnungsskript berechnet die Year-Dimension:

SET CLEARUPDATESTATUS AFTER;
FIX("New York")
   CALC DIM(Year);
ENDFIX

Essbase berechnet die Datenblöcke, die New York darstellen. Da die Berechnung auf der Year-Dimension basiert, bei der es sich um eine dicht besetzte Dimension handelt, sollte Essbase alle Datenblöcke berechnen, die New York enthalten. In jedem Block berechnet Essbase jedoch nur die Aggregationen und Formeln für die Year-Dimension.

Fehler

Als Ergebnis der ersten Berechnung sind einige Datenblöcke für New York bereits als sauber markiert. Essbase berechnet diese Datenblöcke nicht mit dem zweiten Berechnungsskript neu, da die Datenblöcke als bereinigt markiert sind. Die Berechnungsergebnisse sind nicht korrekt.

Lösung

Sie können die korrekten Ergebnisse berechnen, indem Sie Essbase anweisen, die berechneten Datenblöcke nicht als bereinigt zu markieren. Das folgende Berechnungsskript berechnet die richtigen Ergebnisse:

SET CLEARUPDATESTATUS OFF;
FIX("New York")
   CALC DIM(Product);
ENDFIX
SET CLEARUPDATESTATUS AFTER;
FIX("New York")
   CALC DIM(Year);
ENDFIX

Mit dem Befehl SET CLEARUPDATESTATUS OFF berechnet Essbase fehlerhafte Datenblöcke, markiert sie jedoch nicht als sauber, im Gegensatz zum Befehl SET CLEARUPDATESTATUS AFTER.

Bei dieser Lösung wird davon ausgegangen, dass die Datenblöcke nicht als bereinigt aus einer vorherigen Teilberechnung der Datenbank markiert sind.

Sie können sicherstellen, dass alle Datenblöcke unabhängig von ihrem Status berechnet werden, indem Sie "Intelligente Berechnung" deaktivieren. Das folgende Berechnungsskript berechnet alle angegebenen Datenblöcke, unabhängig von ihrem Clean- oder Dirty-Status:

SET UPDATECALC OFF;
FIX("New York")
   CALC DIM(Year, Product);
ENDFIX

Da Sie den Befehl SET CLEARUPDATESTATUS AFTER nicht verwendet haben, markiert Essbase berechnete Datenblöcke nicht als bereinigt.