DATACOPY in einer ASO Datenbank

Viele denken, dass es in einer Aggregate Storage Datenbank keine Calc Skripte gibt. Nun, das ist nicht ganz falsch, aber es gibt 2 Funktionen, die wir in Blockstorage in Calc Skripte ausfĂŒhren: DATACOPY und ALLOCATION. In diesem Beitrag zeige ich, wie einfach eine Datenkopie innerhalb der ASO Storage Datenbank zu machen ist.

Wie es funktioniert

Ich nehme die ASOSamp.Sample Datenbank, die als Beispielanwendung in Essbase verfĂŒgbar ist. Hier möchte ich die Daten von dem Element „Previous Year“ in das „Current Year“ kopieren.

Abbildung 1: Daten der ASOSamp vor dem Kopieren.

Wir brauchen zum Kopieren ein MaxL Skript und eine Datei mit einem Befehl darin. MaxL skripte kennen sie Wahrscheinlich schon, aber dieses hat 3 unterschiedliche Teile, die ich in hierunten farblich markiert habe.

  • Der erste Teil ist, dass eine Berechnung auf der ASOSamp mit einem Skript ausgefĂŒhrt werden soll.
  • Der zweite Teil gibt die Point-Of-View (POV) zu diesem Skript.
  • Der dritte Teil definiert die Region, welche involviert ist.

MaxL Skript

execute calculation on database ‚ASOsamp‘.’Sample‘ with local script_file „C:\temp\ASO_COPY.csc“

POV „Crossjoin(Descendants([Geography], [Geography].Levels(0)),

Crossjoin(Descendants([Transaction Type], [Transaction Type].Levels(0)),

Crossjoin(Descendants([Stores], [Stores].Levels(0)),

Crossjoin(Descendants([Products], [Products].Levels(0)),

Crossjoin(Descendants([Income Level], [Income Level].Levels(0)),

Crossjoin(Descendants([Age], [Age].Levels(0)),

Crossjoin(Descendants([Promotions], [Promotions].Levels(0)),

Crossjoin({[Cash]},

Crossjoin({[Original Price]},

Descendants([MTD], [Time].Levels(0) ))))))))))“

SourceRegion „{[Previous Year],[Current Year]}“;

Wichtig, alle Dimensionen mĂŒssen aufgenommen werden. Also nicht, wie in MDX, wo man die TopKnoten weglassen kann.

Die Skript Datei muss aus dem MaxL zu finden sein. Wenn das MaxL auf dem Server gestartet wird, dann sollte der Pfad aus der Sicht des Servers definiert werden. Zum Beginnen ist es am einfachsten, wenn das MaxL lokal liegt.

Skript Datei

Der Befehl in der Skript Datei bezieht sich auf die SourceRegion in dem MaxL. Es ist ein MDX Statement welcher hierunten dargestellt ist.

([Current Year]) := ([Previous Year]) ;

Abbildung 2: Skript Datei

Beim AusfĂŒhren des MaxL wird eine Ausgabe wie in Abbildung 3 dargestellt. Hierin sieht man, dass Shared Member nicht berĂŒcksichtigt werden.

Abbildung 3: Erfolgreiches Kopieren der Daten.

Ein Aktualisieren des Excel Blattes zeigt jetzt die kopierten Daten an.

Abbildung 4: Die Daten wurden kopiert.

Noch ein Beispiel

In dem nachfolgenden Beispiel zeige ich, wie der Dezember-Wert von dem Vorjahr in den Januar des Aktuellen Jahres kopiert wird. Eine hĂ€ufig verwendete Funktion bei Inventar oder andere Bilanz-GrĂ¶ĂŸen.

MaxL Skript 2

Hier wird die SoureRegion erweitert mit der Dimension Time. Es wurden 2 Tupel gebildet.

execute calculation on database ‚ASOsamp‘.’Sample‘ with local script_file „C:\temp\ASO_COPY.csc“

POV „Crossjoin(Descendants([Geography], [Geography].Levels(0)),

Crossjoin(Descendants([Transaction Type], [Transaction Type].Levels(0)),

Crossjoin(Descendants([Stores], [Stores].Levels(0)),

Crossjoin(Descendants([Products], [Products].Levels(0)),

Crossjoin(Descendants([Income Level], [Income Level].Levels(0)),

Crossjoin(Descendants([Age], [Age].Levels(0)),

Crossjoin(Descendants([Promotions], [Promotions].Levels(0)),

Crossjoin({[Cash]},

{[Original Price]} ))))))))“

SourceRegion „Crossjoin({[Previous Year],[Current Year]},{[Jan],[Dec]})“;

Skript Datei 2

Die Skript Datei wird entsprechend erweitert. Das Ziel steht, wie bei Calc Skripte, an der linken Seite.

([Current Year],[Jan]) := ([Previous Year],[Dec]) ;

Und eine Aktualisierung zeigt, dass die Kopie der Zahl funktioniert hat.

Abbildung 5: Die Dezember Daten wurden in den Januar kopiert.

Ihr Philip Hulsebosch

philip.hulsebosch@hyperionimklartext.de

Veröffentlicht in Essbase Verwendete Schlagwörter: , ,