Teilmenge der Daten im Cube berechnen
Um zu vermeiden, dass mehr berechnet wird, als Sie benötigen, berechnen Sie eine Teilmenge von Daten in der Essbase-Datenbank. Sie können Untergruppen mit einer beliebigen Kombination von Elementgruppenfunktionen, FIX-Anweisungen zur Angabe von Inklusionen und EXCLUDE-Anweisungen zur Angabe von Ausschlüssen angeben.
Um eine Teilmenge von Daten im Cube zu berechnen, verwenden Sie eine der folgenden Methoden:
-
Erstellen Sie eine Formel mit Elementgruppenfunktionen, um Elementlisten zu berechnen.
-
Verwenden Sie die Befehle FIX...ENDFIX, um einen Wertebereich durch Einbeziehung zu berechnen.
-
Verwenden Sie die Befehle EXCLUDE...ENDEXCLUDE, um einen Wertebereich durch Ausschluss zu berechnen.
Hinweis:
Wenn die Option Intelligente Berechnung aktiviert ist, werden die neu berechneten Datenblöcke nach einer Teilberechnung einer Datenbank nicht als bereinigt markiert. Wenn Sie eine Teilmenge einer Datenbank berechnen, können Sie mit dem Befehl SET CLEARUPDATESTATUS AFTER sicherstellen, dass die neu berechneten Blöcke als bereinigt markiert werden. Mit diesem Befehl wird sichergestellt, dass Essbase die Datenbank mit Intelligente Berechnung so effizient wie möglich neu berechnet.
Elementlisten berechnen
Essbase-Elementgruppenberechnungsfunktionen generieren eine Liste von Elementen, die auf einem von Ihnen angegebenen Element basiert.
Beispiel: Die Funktion @IDESCENDANTS generiert eine Liste aller Nachkommen eines angegebenen Elements. Wenn Sie eine Elementsetfunktion in einer Formel verwenden, generiert Essbase eine Liste mit Elementen, bevor die Formel berechnet wird.
Im folgenden Beispiel generiert die Verwendung des @IDESCENDANTS-Befehls für das Element "Gesamtausgaben" eine Liste dieser Elemente – Gesamtausgaben, sich selbst und seine Nachkommen, die Marketing, Entgeltabrechnung und Sonstiges sind:
@IDESCENDANTS("Total Expenses");Siehe auch
FIX-Befehl verwenden
Mit dem FIX-Befehl in Essbase Block Storage-Berechnungsskripten definieren Sie, welche Elemente in die Berechnung aufgenommen werden sollen. Mit FIX-Blöcken können Sie die Performance optimieren, indem Sie Überberechnungen vermeiden. Mit FIX können Sie auch einzelne Teile des Cubes anhand verschiedener Formeln berechnen.
Mit einem FIX-Block im Berechnungsskript können Sie Datenbereiche definieren, die in die Berechnung aufgenommen werden sollen.
Beispiel: Der folgende FIX-Block berechnet nur die Budgetwerte für die Nachkommen von East (New York, Massachusetts, Florida, Connecticut und New Hampshire):
FIX(Budget,@DESCENDANTS(East))
CALC DIM(Year, Measures, Product);
ENDFIXDas folgende Beispiel behebt Elementkombinationen für die untergeordneten Elemente von East mit dem UDA "New Mkt":
FIX(@CHILDREN(East) AND @UDA(Market,"New Mkt"))
Marketing = Marketing * 1.1;
ENDFIXIm folgenden Beispiel wird eine Platzhalterübereinstimmung (???) verwendet, um Elementnamen zu korrigieren, die in den Zeichen -10 enden. Dabei handelt es sich um die Elemente 100-10, 200-10, 300-10 und 400-10:
FIX(@MATCH(Product, "???-10"))
Price = Price * 1.1;
ENDFIXWenn Sie den FIX-Befehl nur für eine dicht besetzte Dimension verwenden, ruft Essbase den gesamten Block ab, der den oder die erforderlichen Werte für die angegebenen Elemente enthält. I/O ist nicht betroffen, und die Zeit für die Berechnungsperformance wird verbessert.
Wenn Sie den FIX-Befehl für eine dünn besetzte Dimension verwenden, ruft Essbase den Block für die angegebenen dünn besetzten Dimensionselemente ab. I/O kann stark reduziert werden.
Essbase durchläuft die Datenbank einmal für jeden FIX-Befehl, den Sie für dicht besetzte Dimensionselemente verwenden. Kombinieren Sie nach Möglichkeit FIX-Blöcke, um die Berechnungsperformance zu verbessern.
Beispiel: Wenn Sie einen FIX-Befehl verwenden, führt das folgende Berechnungsskript dazu, dass Essbase nur einmal durch die Datenbank blättert. Dabei werden sowohl die Ist- als auch die Budgetwerte berechnet:
FIX(Actual,Budget)
CALC DIM(Year, Measures);
ENDFIXWenn Sie dagegen zwei FIX-Befehle verwenden, führt das folgende Berechnungsskript dazu, dass Essbase zweimal durch die Datenbank fährt: einmal die tatsächlichen Datenwerte berechnen und einmal die Budgetdatenwerte berechnen:
FIX(Actual)
CALC DIM(Year, Measures);
ENDFIX
FIX(Budget)
CALC DIM(Year, Measures);
ENDFIXFür eine Teilmenge einer Dimension, die Sie innerhalb eines FIX-Befehls berechnen, können keine Korrekturen vorgenommen werden. Beispiel: Das folgende Berechnungsskript gibt eine Fehlermeldung zurück, da der CALC DIM-Vorgang die gesamte Market-Dimension berechnet, obwohl der obige FIX bestimmte Elemente der Market-Dimension korrigiert:
FIX(@CHILDREN(East) AND @UDA(Market,"New Mkt"))
CALC DIM(Year, Measures, Product, Market);
ENDFIXFIX-Befehle können in anderen FIX-Befehlsblöcken verschachtelt werden. Falsche Verwendung verschachtelter FIX-Befehle kann jedoch zu falschen Ergebnissen führen. Beispiel: Das Ziel des folgenden Berechnungsskripts ist es, allen untergeordneten Elementen von East 1 zuzuweisen und dann New York 2 zuzuweisen:
FIX (@CHILDREN(EAST))
"100-10"=1;
FIX ("New York")
"100-10"=2;
ENDFIX
ENDFIXDer verschachtelte FIX-Befehl wird jedoch auf eine Teilmenge der Dimension fixiert, die durch den darüber liegenden FIX-Befehl angegeben wird (was nicht zulässig ist). Daher weist das Skript allen untergeordneten Elementen von East 2 zu, da das Skript so ausgeführt wird, als würde es wie folgt geschrieben:
FIX (@CHILDREN(EAST),''New York'')
"100-10"=1;
"100-10"=2;
ENDFIXVerwenden Sie nicht verschachtelte FIX-Befehle, sondern zwei separate FIX-Befehlsblöcke. Beispiel:
FIX (@CHILDREN(EAST))
"100-10"=1;
ENDFIX
FIX ("New York")
"100-10"=2;
ENDFIXDie Variable (varName), die von einem VAR-Berechnungsbefehl definiert wird, kann nicht in der FIX-Elementanweisung verwendet werden. Die FIX-Elemente werden ausgewertet, bevor die Berechnung ausgeführt wird, und Variablen werden während der Laufzeit ausgewertet, nachdem die FIX-Anweisung festgelegt wurde. Da sich Variablen während der Berechnungsausführung ändern können, können Sie die Variable nicht als Teil der FIX-Anweisung verwenden. Das folgende Beispiel zeigt die falsche Verwendung der Variablen in der FIX-Elementanweisung:
VAR varName=1;
FIX (@relative(@memberat(@List("Product1","Product2"),varName),0))
COMMANDS;
ENDFIXSiehe auch
Befehl "Ausschließen" verwenden
Verwenden Sie den Befehlsblock EXCLUDE..ENDEXCLUDE in Essbase Block Storage-Berechnungsskripten, um zu definieren, welche Elemente aus der Berechnung ausgeschlossen werden sollen.
Manchmal ist es einfacher, anzugeben, welche Elemente nicht in eine Berechnung einbezogen werden sollen, als zu definieren, welche Elemente einbezogen werden sollen.
Die Angabe von Elementen, die nicht in einem EXCLUDE…ENDEXCLUDE-Befehl berechnet werden sollen, kann einfacher sein als die Angabe einer komplexen Kombination von Elementnamen in einem FIX…ENDFIX-Befehl.
Siehe auch