Generell, werden in Essbase Anwendungen viele Daten importiert. Weil Essbase diese Daten weiterverarbeitet, besteht oft auch die Anforderung, diese Daten auch in andere Systeme zu übertragen. Hierzu gibt es verschiedene Wege und in diesem Beitrag möchte ich den Export mit MDX zeigen.
MDX steht fĂĽr MultiDimensional eXpressions
MDX ist eine herstellerunabhängige Sprache für Abfragen (Query Language) auf OLAP Systeme. Seit der Version 7 kann dieses MDX auch für Essbase verwendet werden. Mit der Einführung von Aggregate Storage (ASO) brauchte man eine Sprache, um Formeln während der Datenabfrage zu berechnen. Dieses wurde dann MDX.
Neben der Funktion um Berechnungen zu machen, kann diese auch für Daten Extrakte gut eingesetzt werden. Eine Erweiterung war dann die Entwicklung von „XML for Analysis“ womit MDX generierte Daten in SOAP Berichte an andere Systeme geschickt werden können.
MDX ist in seiner Struktur vergleichbar mit SQL, denn es hat auch ein SELECT, FROM, WHERE. Es hat aber zusätzlich viele weitere Funktionen die auf Dimensionen von OLAP Systeme Bezug haben, wie z.B. .PrevMember, .Parent und .FirstChild. Zudem gibt es auch die Konzepte von Tuple und Set.
Exportfunktion
Das MDX hat immer schon eine gute Performance gehabt und wird breit eingesetzt. Zum Exportieren von Daten in Dateien gab es eine groĂźe Verbesserung in der Version 11.1.2.4 die allerlei Zwischenschritte nicht mehr erforderlich machte, wenn das MDX mit MaxL ausgefĂĽhrt wird.
Jetzt wurde es möglich um den Output zu formatieren – etwas was essentiell ist in automatisierte Systeme. In MaxL gibt es verschiedene SET Kommando’s die den Extrakt so aufbereiten, das andere Systeme diesen weiter verarbeiten können. Dieses waren die wichtigsten
set column_separator definiert das Trennzeichen, z.B. „|“
set column_header definiert die SpaltenĂĽberschrift
set echo_mode schaltet den Export in eine Datei ein oder aus.
In dem nachfolgenden Beispiel sieht man wie diese eingesetzt werden können. Es ist ein MaxL Skript mit darin eine MDX-Abfrage in rot:
login ‚Benutzername‘ ‚Password‘ on ‚Servername‘;
set message level all;
set column_separator „|“;
set column_header on;
set echo_mode off;
alter session set dml_output alias off;
alter session set dml_output cell_status on;
alter session set dml_output numerical_display fixed_decimal;
alter session set dml_output precision 2;
spool on to ‚C:\Export\Ergebnis.txt‘;
select {[May],[Jun]} on AXIS(0),
{[100],[200]} on AXIS(1)
from [Sample].[Basic];
spool off;
logout;
exit;
Das Ergebnis ist eine Datei mit dem Namen Ergebnis.txt und dem Inhalt:
100|2571.00|2859.00
200|2302.00|2445.00
In Detail
Die Befehle können unterschieden werden in SET und ALTER.
set message level definiert welche Botschaften in die Logdatei geschrieben werden sollen.
set column_separator definiert das Trennzeichen, z.B. „|“
set column_header TRUE gibt den Dimensionsnamen als SpaltenĂĽberschrift, FALSE nicht.
set echo_mode schaltet den Export in eine Datei ein oder aus.
alter session set dml_output…
Beschreibt die Formattierung der Daten in dem Export. Hierin aufgenommen sind die Anzahl der Dezimalstellen, ob ein Alias angezeigt werden soll und was mit fehlende Werte geschehen soll.
In rot ist dann das MDX mit der Selektion der Daten eingefĂĽgt. Dieser Teil kann als variable genommen werden, und damit gibt es das MaxL als Vorlage welches dann mit Variablen fĂĽr MDX und Export Datei verbunden werden kann.
Fazit
MDX kann sehr gut im Zusammenspiel mit MaxL zum Daten Export verwendet werden. Einige Konfigurationsoptionen die ab der Version 11.1.2.4 zur VerfĂĽgung stehen, verbessern in einem Sprung die Formatierung, sodass das Ergebnis in der Datei direkt zum Import in andere Systeme verwendet werden kann.
Ihr Philip Hulsebosch