CiAgICA8IS0tIExpbmtlZEluIC0tPgogICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgIF9saW5rZWRpbl9wYXJ0bmVyX2lkID0gIjEyMzUwNzMiOwogICAgICAgIHdpbmRvdy5fbGlua2VkaW5fZGF0YV9wYXJ0bmVyX2lkcyA9IHdpbmRvdy5fbGlua2VkaW5fZGF0YV9wYXJ0bmVyX2lkcyB8fCBbXTsKICAgICAgICB3aW5kb3cuX2xpbmtlZGluX2RhdGFfcGFydG5lcl9pZHMucHVzaChfbGlua2VkaW5fcGFydG5lcl9pZCk7CiAgICA8L3NjcmlwdD48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICAgICAgKGZ1bmN0aW9uKCl7dmFyIHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0IilbMF07CiAgICAgICAgICAgIHZhciBiID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7CiAgICAgICAgICAgIGIudHlwZSA9ICJ0ZXh0L2phdmFzY3JpcHQiO2IuYXN5bmMgPSB0cnVlOwogICAgICAgICAgICBiLnNyYyA9ICJodHRwczovL3NuYXAubGljZG4uY29tL2xpLmxtcy1hbmFseXRpY3MvaW5zaWdodC5taW4uanMiOwogICAgICAgICAgICBzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGIsIHMpO30pKCk7CiAgICA8L3NjcmlwdD4KICAgIDxub3NjcmlwdD4KICAgICAgICA8aW1nIGhlaWdodD0iMSIgd2lkdGg9IjEiIHN0eWxlPSJkaXNwbGF5Om5vbmU7IiBhbHQ9IiIgc3JjPSJodHRwczovL3B4LmFkcy5saW5rZWRpbi5jb20vY29sbGVjdC8/cGlkPTEyMzUwNzMmZm10PWdpZiIgLz4KICAgIDwvbm9zY3JpcHQ+CiAgICA8IS0tIEVuZCBMaW5rZWRJbiAtLT4KICAgIA==
Generic filters
Exact matches only
Search in title
Search in excerpt
Search in content

Individuelle Berechnungen mit MDX-Ausdrücken

PDF Download

Liebe Datenanalysten,

wenn es um das Programmieren geht, scheiden sich die Geister: Viele Anwender erwarten (zu Recht), dass sie damit nichts zu tun haben müssen, andere wünschen sich (zu Recht) eine solche Möglichkeit, damit sie ihre Anwendung noch individueller anpassen können. DeltaMaster wird beiden Lagern gerecht: Einerseits lassen sich selbst anspruchsvolle Analysen auf komplexen Datenbeständen allein mit der grafischen Benutzungsoberfläche erstellen. Andererseits akzeptiert DeltaMaster fast überall, wo Objekte zu selektieren oder Berechnungen durchzuführen sind, programmiersprachliche Anweisungen: die so genannten MDX-Ausdrücke.
Auch bei der rein obenflächengesteuerten Benutzung kommt diese Sprache zum Einsatz – wenngleich unbemerkt: DeltaMaster generiert fleißig MDX-Ausdrücke, die er an die OLAP-Datenbank sendet, um Ihren Würfeln die gewünschten Informationen zu entlocken.
Mit diesen clicks! möchten wir Sie ein bisschen an MDX heranführen. Eine systematische Einweisung ist ein klarer Fall für die Fachliteratur; unsere Empfehlungen finden Sie weiter unten. In den clicks! gehen wir lieber, wie Sie und wir es auch sonst gerne tun, analytisch vor: Wir fangen nicht bei grundlegenden Sprachkonzepten an, sondern sezieren und erklären ausgewählte MDX-Bausteine, die Sie unmittelbar in Ihren Modellen verwenden können.
Wenden Sie sich an Ihre Ansprechpartner, wenn Sie weitere Fragen zu MDX haben – sie helfen Ihnen gern!

Herzliche Grüße
Ihr Team von Bissantz & Company

Die Modellierungs- und Abfragesprache MDX

MDX, kurz für Multidimensional Expressions, ist eine Sprache zum Definieren, Ändern und Abfragen von mehrdimensionalen Objekten und Daten, wie sie in einer OLAP-Datenbank vorliegen. Die Verwandtschaft zur SQL (Structured Query Language), die es bei „normalen“, relationalen Datenbanken zu einiger Bekanntheit gebracht hat, ist unverkennbar; dennoch ist MDX nicht als Erweiterung von SQL zu verstehen.

Microsoft führte diese Sprache 1998 ein, etliche andere Hersteller haben sie als De-facto-Standard akzeptiert und in ihren Produkten implementiert. So arbeitet DeltaMaster auf der Basis von MDX nicht nur mit Microsoft Analysis Services, sondern beispielsweise auch mit Applix TM1, MIK-OLAP, MIS Alea, SAP BW und Panoratio Database Images zusammen.

MDX-Beispiel: Berechnung des Deckungsbeitrags

Manchmal sieht man es einer DeltaMaster-Anwendung kaum an, dass MDX im Spiel ist. Bei dem Deckungsbeitrag in unserer Chair-Demo beispielsweise handelt es sich um eine Kennzahl, die direkt im Frontend angelegt wurde, die DeltaMaster also nicht aus der Datenbank ausliest, sondern selbst berechnet. Über den Analysewert-Browser (Menü Modell) rufen Sie die Eigenschaften/Definition des Deckungsbeitrags ab.

Die einfache Formel #5-#1-#2-#3-#4 ergibt einen MDX-Ausdruck, der die erforderliche Subtraktion bewirkt. Den Measures, mit denen gerechnet wird, sind hier die Platzhalter #1 bis #5 zugeordnet. Diese sind kein Bestandteil von MDX, sondern eine Kurzschreibweise, welche die Eingabe in DeltaMaster erleichtert. Über den Link Auswählen können Sie beliebige weitere bereits definierte Kennzahlen als Platzhalter zugänglich machen.

Der vollständige MDX-Ausdruck ist auf der Seite System in den Analysewerteigenschaften nachzulesen:

[Measures].[Umsatz]
– [Measures].[Erlösschmälerungen]
– [Measures].[Lohnkosten]
– [Measures].[Materialkosten]
– [Measures].[Rabatt]

Die Dimensions- und Elementnamen schreibt man üblicherweise in eckigen Klammern. Measures sind im Grunde eine weitere Dimension, so wie Produkte, Kunden usw. Sie unterscheiden sich aber doch hier und da (zum Beispiel ist eine Aggregation über alle Measures nur selten sinnvoll) und werden deshalb in MDX etwas anders behandelt.

MDX-Beispiel: Werte in Pivottabellen in Beziehung zur übergeordneten Gruppe setzen

In einer Pivottabelle möchten wir sehen, welchen Anteil ein Wert an der nächsthöheren Gruppierungsstufe hat. Im Chair-Beispiel etwa: Welchen Anteil hat das Produkt Arcade AE44 an der Produktgruppe Arcade, wie verhält sich diese zur Hauptgruppe der Luxusmodelle und welchen Anteil hat diese wiederum an den Gesamtumsätzen der Vertretergruppe? Mit ein wenig MDX ist es ein Leichtes, diese Informationen übersichtlich in die Pivottabelle zu integrieren.

Die Berechnung erfolgt in zwei Schritten: Zunächst ist für jede Ebene die Summe ihrer Elemente zu ermitteln, also etwa die Summe aller Umsätze mit Luxusmodellen. Im zweiten Schritt dividieren wir die Einzelwerte durch die Summe.

1 Über das „Ich möchte“-Menü im Analysewert-Browser (Menü Modell) können Sie einen neuen Analysewert anlegen, und zwar vom Typ Benutzerdefiniert. Wenn Sie den Umsatz als Variable #1 auswählen, ergibt der folgende MDX-Ausdruck die gewünschte Addition:

([Produkte].CurrentMember.Parent, #1)

Darin bezeichnet[Produkte].CurrentMember das aktuelle Objekt (Member) in der Dimension Produkte, zum Beispiel Arcade AE44. Die mit einem Punkt angeschlossene Funktion Parent verschiebt die Sicht um eine Hierarchieebene nach oben, zum Vater, hier also zur Produktgruppe Arcade. Somit sind alle Arcade-Modelle, von AE44 bis AE77, markiert und die „Koordinaten“ des Ausschnitts, der uns interessiert, auf einer Achse bereits festgelegt. Die zweite Achse sind die Measures, die wir mit der Kennzahl #1 bereits als Umsatz definiert hatten. Wenn die Datenbank die so beschriebenen Elemente aggregiert, erhalten wir den gewünschten Gesamtumsatz der aktuellen Produktgruppe bzw. -hauptgruppe. Die runden Klammern um den Ausdruck sind erforderlich, damit der Ausdruck als so genanntes Tupel interpretiert wird. Ein Tupel ist eine Kombination von Elementen unterschiedlicher Dimensionen, die auf eine Zelle oder einen Zellbereich des zugrunde liegenden Datenwürfels zeigen.

Speichern Sie den neuen Analysewert unter einem treffenden Namen, zum Beispiel Umsatz, Summe (Pivot-Gruppe), und nehmen Sie ihn in die Pivottabelle auf („…“ hinter Measures anklicken).

Übrigens: Wenn Sie im Namen eines Analysewerts zwei Leerzeichen eingeben, erzeugt DeltaMaster im Spaltenkopf einen Zeilenumbruch.

2 Die zweite Kennzahl, der prozentuale Anteil an der soeben definierten Gruppensumme, lässt sich auch ohne MDX definieren, indem Sie einen weiteren neuen Analysewert anlegen und den Assistenten für Quotientenwerte benutzen. Zu dividieren ist der Umsatz durch den Pivotgruppen-Umsatz, den wir vorher in MDX formuliert hatten.

Analog zu der Summe hätten wir auch diese Berechnung in MDX formulieren können. DeltaMaster hat uns die Arbeit jedoch abgenommen und dabei auch gleich eine Sonderbehandlung für den Fall eingefügt, dass der Nenner null wird.

Wenn Sie den neuen Analysewert in die Pivottabelle einblenden, lassen sich die eingangs gestellten Fragen auf einen Blick beantworten:

In der Vertretergruppe 1 haben die Luxusmodelle einen Umsatzanteil von rund 23 %. Davon macht die Serie Arcade gut 37 % aus, von denen mehr als zwei Drittel (67,4 %) auf das Modell AE44 zurückgehen.

 

Literaturempfehlungen

Unser Entwicklungsteam empfiehlt denen, die sich intensiver mit MDX beschäftigen wollen, die folgenden beiden Bücher.

Spofford, George: MDX Solutions With Microsoft SQL Server Analysis Services. Wiley: New York u. a. 2001.
432 Seiten. ISBN 0?471?40046?7.

Whitehorn, Mark; Zare, Robert; Pasumansky, Mosha: Fast Track to MDX. Springer: London u. a. 2002.
266 Seiten. ISBN 1?85233?681?1.