Benutzerdefinierte Berechnungen für Aggregate Storage-Cubes

Benutzerdefinierte Berechnungen erweitern die Analysefunktionen von Essbase, indem sie die Ausführung wiederkehrender Berechnungen auf Aggregate Storage-(ASO-)Cubes aktivieren. Sie können bestimmte Cube-Bereiche als Ziel festlegen, um Soll-, Haben- und Verrechnungsinformationen für Buchungen bereitzustellen.

Sie können benutzerdefinierte Berechnungen für Aggregate Storage-Cubes schreiben, die Zellen der Zielebene 0 aktualisieren. Benutzerdefinierte Berechnungsskripte werden in MDX ausgedrückt.

Mit benutzerdefinierten Berechnungen können Sie grundlegende Berechnungen für Kontensalden in einem Hauptbuch durchführen und die Ergebnisse auf Elemente der Zielebene 0 eines Essbase Aggregate Storage-Cubes schreiben. Sie können Berechnungen für Kontensalden oder feste Beträge durchführen und die Wiederholung jeder Buchungsperiode planen.

Benutzerdefinierte Berechnungen können nützlich sein, wenn der Cube für das Hauptbuchreporting verwendet wird, wobei Doppelbuchungen wirksam sind. Sollpositionen, wie Vermögenswerte und Aufwendungen, müssen mit Habenpositionen wie Eigenkapital und Erlös ausgeglichen sein.

Mit dem folgenden Workflow können Sie benutzerdefinierte Berechnungen erstellen und ausführen:

  • Erstellen Sie ein Berechnungsskript, das in MDX ausgedrückt wird.

  • Wählen Sie einen Bereich des Cubes aus, in dem die Berechnung ausgeführt wird. Sie geben den Bereich zur Ausführungszeit mit den Ziel- und POV-(Point of View-)Parametern an.

  • Wenn Sie die Soll- und Habenverarbeitung verwenden, wählen Sie die Soll- und Habenelemente in der Gliederung aus, um die positiven und negativen Werte zu schreiben. Sie geben diese Parameter zur Ausführungszeit an.

  • Wenn Sie Ausgleichseinträge verwenden, wählen Sie den Bereich aus, in dem Ausgleichseinträge vorgenommen werden sollen. Sie geben diesen Parameter zur Ausführungszeit mit einem MDX-Tupel an. Wenn kein Offset angegeben oder leer ist, wird die Offsetberechnung nicht ausgeführt.

    Hinweis:

    In der HB-Buchhaltung ist eine Verrechnungsbuchung eine Ausgleichsmaßnahme auf der gegenüberliegenden Seite des Buchs. Beispiel: Bei einer Gutschrift in Höhe von 100 US-Dollar im Januar kann der Belastungsseite des Buchs eine Verrechnung in Höhe von 100 US-Dollar hinzugefügt werden, sodass das Buch als Vorbereitung auf einen bevorstehenden Aufwand für diesen Betrag ausgeglichen werden kann.

  • Führen Sie das benutzerdefinierte Berechnungsskript aus.

Liste der benutzerdefinierten Berechnungskriterien

Wenn Sie benutzerdefinierte Berechnungen für Essbase Aggregate Storage-(ASO-)Cubes entwerfen, müssen folgende Kriterien berücksichtigt werden: POV (Kontextbereich), MDX-Berechnungsskript, Ziel (wo Ergebnisse geschrieben werden), Quellregion (von Formeln referenziert), optionaler Offsetwert sowie optionale Gutschrifts- und Lastschriftelemente.

Die Funktionalität für benutzerdefinierte Berechnungen hängt von einer Vielzahl bestimmter Kriterien ab. Prüfen Sie diese Bedingungen, bevor Sie fortfahren.

Tabelle 38-1: Beschreibung der benutzerdefinierten Berechnungskriterien

Kriterien Beschreibung

POV

Ein symmetrischer Bereich in der Datenbank, der den Kontext beschreibt, in dem benutzerdefinierte Berechnungen ausgeführt werden.

Attributelemente können für dieses Argument nicht verwendet werden.

Berechnungsskript

Ein Berechnungsskript in MDX.

Attributelemente können nicht links in der Gleichung verwendet werden.

Target

Ein Tupelargument, das in MDX ausgedrückt wird und die Region im Cube definiert, in der Berechnungsergebnisse geschrieben werden. Dieses Argument wird mit der linken Seite jeder Formel und dem Offset kombiniert, um zu bestimmen, wo die Ergebnisse und Offsetwerte geschrieben werden.

Attributelemente können für dieses Argument nicht verwendet werden.

(Optional) Offset

Der Speicherort in der Datenbank, an dem ein Ausgleichswert für jeden Quellbetrag geschrieben wird.

Attributelemente können für dieses Argument nicht verwendet werden.

(Optional) Haben- und Soll-Elemente

Bei Buchungen mit doppelter Eingabe werden Journalbuchungen für eine Transaktion ausgeglichen. Beide sind MDX-Elementausdrücke. Das Soll-Element gibt ein Element an, in das positive Ergebniswerte geschrieben werden. Das Haben-Element gibt ein Element an, in das negative Ergebniswerte geschrieben werden.

Attributelemente können für dieses Argument nicht verwendet werden.

Quellregion

Ein MDX-Set-Ausdruck, der den Bereich des Cubes angibt, auf den die Formeln im Skript verweisen.

Benutzerdefinierte ASO-Berechnungen erstellen und ausführen

Erstellen Sie benutzerdefinierte Berechnungen für Essbase Aggregate Storage-Cubes, und führen Sie sie aus, um Aktualisierungen an Zellen der Zielebene 0 vorzunehmen. Benutzerdefinierte Berechnungsskripte werden in MDX ausgedrückt. Um die Skripte auszuführen, verwenden Sie die MaxL-Berechnung ausführen.

Benutzerdefinierte Berechnungen schreiben

Ein benutzerdefiniertes Berechnungsskript ist eine Datei, die Sie mit der Erweiterung .csc erstellen und speichern. Erstellen Sie das benutzerdefinierte Berechnungsskript mit einem oder einer Reihe von Tupelausdruckspaaren in MDX, die durch Semikolons abgeschlossen sind. Syntax:

tuple := numeric_value_expression;

Das Tupel ist eine MDX-Spezifikation von einem oder mehreren Elementen, wobei keine der Elemente aus derselben Dimension liegen dürfen. Das Tupel muss sich auf der linken Seite der Gleichung befinden und ist der primäre Faktor bei der Bestimmung, wo Ergebnisse der benutzerdefinierten Berechnung geschrieben werden.

Im Tupelausdruck sind nur Elementnamen zulässig. Die Verwendung von MDX-Funktionen wird für benutzerdefinierte Berechnungsskripte nicht unterstützt.

Hinweis:

Der sekundäre Faktor, der das Ziel für Ergebnisse bestimmt, ist der Parameter target, und der dritte Faktor ist der Parameter POV. Sie geben den zweiten und dritten Parameter bei der Berechnungsausführung und nicht als Teil des Berechnungsskripts an.

numeric_value_expression ist ein einfacher numerischer MDX-Wertausdruck, z.B. eine Zahl oder ein arithmetischer Vorgang. Der Ausdruck muss auf der rechten Seite der Gleichung stehen. Es sind nur arithmetische Operatoren zulässig. Ein Fehler wird zurückgegeben, wenn nicht arithmetische Operatoren (wie AND-, OR- oder IF-Anweisungen) verwendet werden.

Elementnamen können im numerischen Wertausdruck verwendet werden, die Verwendung von Elementfunktionen wird jedoch für benutzerdefinierte Berechnungsskripte nicht unterstützt.

Attributelemente können nicht auf der linken Seite der Gleichung in einem benutzerdefinierten Berechnungsskript verwendet werden.

Sie müssen auch die Quellregion definieren, die als Performancehinweis für Essbase dient. Essbase legt die in der Quellregion angegebenen Daten vorab fest und verwendet diese zur Ausführung der im Skript angegebenen Berechnung.

Benutzerdefinierte Berechnungen ausführen

Sie können benutzerdefinierte Berechnungen mit der MaxL Execute Calculation-(Aggregate Storage-)Anweisung ausführen.

Sie können auch benutzerdefinierte Berechnungsskripte mit der API ausführen, indem Sie die Java-API-Methode IEssPerformCustomCalc.performCustomCalc oder die C-API-Funktion EssPerformCustomCalcASO aufrufen.

Sie können auch Oracle Hyperion Calculation Manager verwenden, um eine benutzerdefinierte Berechnung zu entwerfen und sie für die Ausführung in Enterprise Scheduling Services bereitzustellen.

Beispielanwendungsfall für benutzerdefinierte Berechnungen

In diesem Beispielanwendungsfall für eine benutzerdefinierte Berechnung für einen Essbase Aggregate Storage-(ASO-)Cube werden ein Gutschriftselement, ein Lastschriftelement und eine Verrechnung verwendet, um Aufwandsumlagen für Geschäftsmieten auszuführen.

Betrachten Sie einen Umriss mit den folgenden Dimensionen:

  • Unternehmen, das CompanyA, CompanyB und andere untergeordnete Elemente enthält.

  • Abteilung, die nummerierte Abteilungen enthält, wie 101, 102, 103.

  • Konto, bei dem Konto 5740 ein Konto für Mietaufwand und SQFT ein statistisches Konto ist, mit dem die Quadratmeterzahl für jede Abteilung erfasst wird.

  • Szenario, in dem das Element "Ist" verwendet wird, in dem Daten gebucht werden, und das Element "Umlage" das Element, in dem Umlagen und benutzerdefinierte Berechnungen gespeichert werden. Das Element "Szenario" ist ein übergeordnetes Element, das die untergeordneten Elemente "Ist" und "Zuteilung" aggregiert.

  • Jahr, eine Zeitdimension, die nach Monaten und Quartalen organisiert ist.

  • Geografie, eine nach Bundesländern und Städten organisierte Dimension.

  • AmountType, bei dem Soll das Ziel und Haben die Verrechnung ist.

  • Projekt, eine Dimension, die Projekte wie Proj1, Proj2 enthält.

Der POV ist ein MDX-Set-Ausdruck, der angibt, wo die benutzerdefinierte Berechnung ausgeführt werden soll. Es wird folgendermaßen angegeben:

CrossJoin( { ( [Company], [101], [Jan], [Scenario] ) },
           Descendants( Geography, Geography.Levels(0)) )

DebitMember ist ein MDX-Elementausdruck, der ein Soll-Element angibt, in das positive Ergebniswerte geschrieben werden sollen. Er wird als [BeginningBalance_Debit] angegeben.

CreditMember ist ein MDX-Elementausdruck, der ein Guthabenelement angibt, in das negative und verrechnende Ergebniswerte geschrieben werden sollen. Er wird als [BeginningBalance_Credit] angegeben.

Hinweis:

Der Ausgleich wird in das Soll-Element geschrieben, falls die Summe aller Ergebniswerte negativ ist.

Der Offset ist ein MDX-Tupelausdruck, der angibt, wo Ausgleichseinträge vorgenommen werden sollen. Er wird als ([Account_NA], [Project_NA]) angegeben.

Der Offsetausdruck wird mit Ziel und POV kombiniert, um die Position zu bestimmen, an der Ausgleichseinträge vorgenommen werden. Wenn sich Dimensionen überschneiden, ist die Reihenfolge zum Auflösen der Versatzposition der Versatz, das Ziel und der POV in dieser Reihenfolge.

Das Ziel ist ein MDX-Tupelausdruck, der angibt, wo die Ergebnisse der benutzerdefinierten Berechnung geschrieben werden sollen. Er wird als (Allocation) angegeben.

Der Zielausdruck wird mit dem POV und der linken Seite jeder Zeile im benutzerdefinierten Berechnungsskript kombiniert, um den Speicherort zu bestimmen, an dem Ergebnisse geschrieben werden. Wenn sich Dimensionen überschneiden, ist die Reihenfolge zum Auflösen der Zielposition die linke Seite der Gleichungen, des Ziels und des POV in dieser Reihenfolge. In diesem Beispiel werden Ergebnisse in das Umlageelement geschrieben, da das Ziel das im POV angegebene Szenarioelement überschreibt.

Im Folgenden finden Sie ein Beispiel für ein benutzerdefiniertes Berechnungsskript:

(AccountA,Proj1) := 100;
([AccountB], [Proj1]) := ([AccountB], [Proj1]) * 1.1;
(AccountC,Proj1) := 
	((AccountB,Proj1,2007) + (AccountB, Proj1)) / 2;
(AccountA,Proj2) := 
	((AccountD,Proj1) + 
	  (AccountB,Proj2)) / 2;

Für jede Kombination im POV,

  • Das Berechnungsskript wird im Kontext der aktuellen POV-Kombination ausgeführt.

  • Ein Offsetwert wird in den Zielspeicherort geschrieben.

Hinweis:

Jede Formel (Zeile im Berechnungsskript) wird gleichzeitig und nicht sequenziell ausgeführt. Daher können Sie das Ergebnis einer Formel nicht in einer nachfolgenden Formel verwenden.

Um den Quellbereich zu definieren, prüfen Sie das benutzerdefinierte Berechnungsskript, und bestimmen Sie, welche Elemente auf der rechten Seite von Gleichungen referenziert werden. Die Quellregion sollte mindestens alle Elemente von der rechten Seite der Zuweisungsanweisungen im benutzerdefinierten Berechnungsskript enthalten.

Definieren Sie den Quellbereich als einzelnes MDX-Set. Wenn die Elemente auf der rechten Seite der Gleichungen aus mehreren Dimensionen stammen, können Sie das Set mit CrossJoin aus zwei Sets erstellen. CrossJoin akzeptiert nur zwei Sets, sodass Sie möglicherweise verschachtelte CrossJoins verwenden müssen.

Die Quellregion für das oben genannte benutzerdefinierte Berechnungsskript lautet:


Crossjoin(
 {[AccountB], [AccountD]}, 
   Crossjoin(
    {[Proj1], [Proj2]}, {[2007]}
   )
)

Es ist nicht erforderlich, Elemente in die Quellregion einzuschließen, die nicht im Skript zugewiesen sind. Beispiel: Wenn Sie der Quellregion eine [AccountC] hinzugefügt haben, die nicht im Skript verwendet wird, wird sie ignoriert und kann zu einer leichten Beeinträchtigung der Performance führen.

Zahlen müssen nicht in der Herkunftsregion berücksichtigt werden. Beispiel: Für die folgende Zuweisung in einem benutzerdefinierten Berechnungsskript muss der Quellregion nichts hinzugefügt werden: ([Bud Var]):=10.

Benutzerdefinierte Berechnungen mit NONEMPTYTUPLE optimieren

Mit der Eigenschaft NONEMPTYTUPLE können Sie ein benutzerdefiniertes Essbase Aggregate Storage-(ASO-)Berechnungsskript optimieren, um Speicherressourcen zu sparen, indem Sie leere Tupel überspringen, wenn Sie große, dünn besetzte Datasets berechnen.

Da große Datasets sehr spärlich sein können, kann die Verwendung der Eigenschaft NONEMPTYTUPLE in benutzerdefinierten Berechnungsskripten das Skript optimieren, um Speicherressourcen zu sparen.

Sie erstellen ein benutzerdefiniertes Berechnungsskript mit einem oder einer Reihe von Tupelausdruckspaaren in MDX, die durch Semikolons abgeschlossen sind. Optional können Sie leere Ergebnissätze aus der Berechnung herausfiltern, indem Sie die Eigenschaftsklausel NONEMPTYTUPLE in das benutzerdefinierte Berechnungsskript aufnehmen.

Wenn Sie die Eigenschaftsklausel NONEMPTYTUPLE in einem benutzerdefinierten Berechnungsskript verwenden, weist Essbase darauf hin, dass der für ein Tupel berechnete Zellenwert leer ist, wenn das angegebene nonempty_member_list leer ist.

Syntax

use_optimized_way;
tuple := [NONEMPTYTUPLE (nonempty_member_list)] numeric_value_expression;

WHERE

  • use_optimized_way – ein Literalschlüsselwort, das erforderlich ist, um die Verwendung der Eigenschaft NONEMPTYTUPLE im Berechnungsskript zu aktivieren. Wenn sie ausgelassen werden, werden NONEMPTYTUPLE-Anweisungen ignoriert.

  • tuple - eine MDX-Spezifikation von einem oder mehreren Elementen, wobei keine der Elemente aus derselben Dimension abgeleitet werden dürfen.

  • NONEMPTYTUPLE – eine optionale Eigenschaft, die Sie verwenden können, um die Berechnungsperformance zu optimieren. Wenn es verwendet wird, muss auf diese Literaleigenschaft nonempty_member_list folgen.

  • nonempty_member_list - ein oder mehrere durch Komma getrennte Elementnamen aus unterschiedlichen Dimensionen.

  • numeric_value_expression - ein einfacher numerischer MDX-Wertausdruck, z.B. eine Zahl oder ein arithmetischer Vorgang. Der Ausdruck muss auf der rechten Seite der Gleichung stehen. Es sind nur arithmetische Operatoren zulässig. Ein Fehler wird zurückgegeben, wenn nicht arithmetische Operatoren (wie AND-, OR- oder IF-Anweisungen) verwendet werden.

Beispiele

Die folgenden Beispiele für benutzerdefinierte Berechnungsskripte enthalten eine NONEMPTYTUPLE-Eigenschaftsklausel, um leere Tupel aus der Aufnahme in den Berechnungsdurchlauf herauszufiltern.

use_optimized_way;
([Balance].[Net Balance].[Net Change].[Allocation Out]):= NONEMPTYTUPLE ([Balance].[Remainder],[Rule]) -(([Balance].[Remainder],[Rule])*(20.24000/100));
([2014], [August], [Actual]):= NONEMPTYTUPLE ([2014], [January], [Actual]) ([2014], [January], [Actual]);

Weitere Informationen

MDX-Optimierungseigenschaften