MDX-Tutorial #1: Was ist ein Cube und warum bloß?

Der Start ins MDX-Tutorial. Besprochene Themen: Grundlegender Aufbau eines Cubes, Dimensionen, Hierarchien, Kennzahlen, Vor- und Nachteile eines Cubes. Komplett auf Deutsch.

Herzlich willkommen zum MDX-Tutorial!

Hallo und herzlich willkommen zum MDX-Tutorial für Anfänger. Mein Name ist David und ich werde auf den nächsten Seiten versuchen, dir einen Einstieg in die Grundlagen von MDX zu vermitteln. Falls du unterwegs eine Frage oder einen Verbesserungsvorschlag hast, freue ich mich über eine E-Mail oder einen Kommentar am Ende der Seite. Genug gefaselt – los geht’s!

Fahrrad.9000 – ein Beispielunternehmen

Angenommen, wir sind Besitzer eins Fahrradherstellers, nämlich Fahrrad.9000. Das Unternehmen wurde von uns im Jahr 2001 gegründet und inzwischen haben wir unser Produktangebot reichhaltig erweitert. Neben Fahrrädern stellen wir inzwischen eine ganze Reihe weiterer Gegenstände rund um das Fahrrad her, darunter beispielsweise Fahrradzubehör und Sportbekleidung:

Drei Produkte, denen wir im weiteren Verlauf des MDX-Tutorial wiederbegegnen werden: Schwarzes Bergrad 47" für 420 €, rotes Sporty Shirt XL für 25 €, grüne Thermoflasche "Tim" für 12 €

Seit Gründung sammeln wir eine ganze Reihe von Informationen über unsere Kunden, etwa ihren Namen und die Kontaktdaten. Außerdem erfragen wir bei Neukunden die Anzahl ihrer Kinder. Hier sind drei der Kunden von Fahrrad.9000:

Drei Kunden, die uns durch das MDX-Tutorial begleiten werden: Finn Fenchel aus Frankfurt, Karl Knoblauch aus Kiel (2 Kinder), Berta Blumentopf aus Berlin (1 Kind)

Die fertiggestellten Produkte werden über Vertriebspartner verkauft: Kleine privat geführte Fahrradgeschäfte kaufen unsere Produkte und bieten diese vor Ort an. Außerdem vertreiben wir unser Angebot schon seit 2001 über den eigenen Online-Shop. Im laufenden Geschäft gehen Aufträge ein und Fahrräder werden ausgeliefert.

Uns könnten jetzt die folgenden Fragen interessieren:

  • Wie viele Fahrräder der Sorte „Stadtrad 380“ wurden verkauft?
  • Wieviel Umsatz wurde erzeugt?
  • Werden rote Fahrräder häufiger von Frauen gekauft?

Das heißt, uns interessiert eine bestimmte Kennzahl – etwa der Umsatz oder der Absatz – bezogen auf bestimmte Objekte wie beispielsweise Kunden oder Produkte. In der Welt der Cubes heißen solche Objekte Dimensionen.

Dimensionen

Bisher haben wir zwei Dimensionen von Fahrrad.9000 kennen gelernt: Kunden und Produkte. Dimensionen stehen also für Dinge, die untersucht werden können. Sie zerlegen unser Unternehmen in allgemeine Interessensbereiche wie Kunden, Lager, Filialen, aber auch abstrakte Themen wie die Zeit.

Jede Dimension zeichnet sich durch ihre ganz eigenen Attribute aus. Jeder Kunde hat einen Namen, ein Geschlecht und einen Wohnort – oder in der Sprache der Cubes: Die Dimension „Kunde“ besitzt die Attribute „Name“, „Geschlecht“ und „Wohnort“. Die folgende Abbildung stellt die beiden Begriffe dar:

Der Kunde ist die Dimension, sein Name, Wohnort und Geschlecht sind seine Attribute.

Karl Knoblauch steckt also in der Dimension „Kunde“. Das Attribut „Name“ hat für ihn die Ausprägung „Karl Knoblauch“, sein „Wohnort“ ist Kiel. Die konkreten Kunden unterscheiden sich also voneinander durch ihre Ausprägungen in den Attributen. Meistens ändern sich diese Attribute nur selten. Ein Kunde bleibt weiblich, die Farbe rot bleibt rot.

Die Dimension legt also den Gegenstand unserer Untersuchung fest. Die Attribute geben uns die Möglichkeit auszuwählen, welche Elemente dieser Dimension betrachtet werden sollen. So liegt unser Augenmerk möglicherweise auf den weiblichen Kunden oder nur auf den schwarzen Fahrrädern.

Kennzahlen

Die Kennzahlen sind die Größen, die uns tatsächlich interessieren, beispielsweise die verkaufte Menge der roten Fahrräder. Sie messen einen Wert für eine gegebene Attribut-Kombination. Weitere Kennzahlen könnten zum Beispiel der Umsatz oder die Anzahl der Aufträge sein. Da der Cube englisch spricht, hier schon vorweg: In MDX werden die Kennzahlen „Measures“ genannt.

Damit eines herrscht, nämlich Klarheit, folgen hier noch einmal die obigen Beispiele. Dieses Mal sind die Dimensionen und Kennzahlen gekennzeichnet:

Vergleich zwischen Measures (deutsch: Kennzahlen), Attributen und Dimensionen

Die MDX-Abfragen zu diesen Fragestellungen sind nicht besonders schwierig, aber bevor wir damit loslegen. sollten wir noch kurz klären, was Hierarchien sind.

Hierarchien

Manche Attribute stehen mit anderen Attributen in inhaltlichem Zusammenhang. Bei Fahrrad.9000 sortieren wir unsere Produkte in Kategorien und unterteilen diese Kategorien wiederum in Unterkategorien. Entsprechend existieren in der Dimension „Produkt“ die Attribute „Kategorie“ und „Unterkategorie“. Ganz natürlich entsteht eine Struktur:

Beispiel für eine Hierarchie in einem OLAP-Cube
Jeder Artikel ist in eine Unterkategorie einsortiert. Die Unterkategorien sind in Kategorien zusammengefasst. Ein Cube kann solche Beziehungen abbilden und nennt sie dann „Hierarchien“. In Hierarchien sagt man dann nicht mehr Attribut, sondern Hierarchie-Ebene. Eine Hierarchie beginnt stets mit der gröbsten Ebene, also im Beispiel mit der Hauptkategorie. Diese Ebene enthält die wenigsten Elemente, hier sind es die zwei Hauptkategorien „Fahrräder“ und „Zubehör“. Es folgen sortiert die immer feiner werdenden Einteilungen – im Beipsiel die vier Unterkategorien und schließlich die einzelnen Artikel.

Hierarchien sind nützlich für einige fortgeschrittene Funktionen, die du im späteren Verlauf des MDX-Tutorial kennen lernen wirst. Vorerst wollen wir uns damit begnügen, dass Hierarchien etwas Ordnung in den Dimensionen schaffen.

Was nütz der Cube? Das ging doch früher auch schon alles mit … !

Theoretisch bietet uns der Cube die Möglichkeit, schnell sehr große Datenmengen auszuwerten. Das hilft zum Beispiel bei Standard-Berichten und in explorativen Analysen. Der Cube sorgt für kurze Abfragezeiten, indem er die Kennzahlen vorberechnet, und zwar während wir schlafen. Im Idealfall weiß er, mit welchen Dimensionen und Kennzahlen wir am liebsten arbeiten, und welche Attribute der Dimensionen uns am wichtigsten sind. Bei Fahrrad.9000 interessiert uns der Umsatz des laufenden Jahres sicherlich täglich, während das Gründungsjahr 2001 kaum noch eine Rolle im Tagesgeschäft spielt. Bei der regelmäßigen Cube-Aufbereitung werden daher möglicherweise nur die Kennzahlen für das aktuelle Jahr und das Vorjahr berechnet. Dadurch dauert die Bereitstellung nicht zu lange, und der Umsatz ist für die aktuellen Jahre ohne lange Wartezeiten abrufbar.

Aber was ist mit den Monaten? Und möglicherweise interessiert uns ja auch die Kombination mit einer anderen Dimension: Wie hoch war der Umsatz im aktuellen Jahr, der durch Frontleuchten in Hamburg realisiert worden ist? Wie viele Fahrräder wurden am 19.04., dem Weldfahrradtag, pro Bundesland verkauft? Diese zwei Beispiele zeigen, dass es sehr viele Möglichkeiten gibt, Attribute zu kombinieren. Allein für das Attribut „Tagesdatum“ gibt es ja pro Kennzahl schon 365 Ausprägungen, die vorberechnet werden könnten. Gehen wir davon aus, dass Fahrrad.9000 tausend verschiedene Produkte im Angebot hat, ergeben sich für jede Kennzahl schon 365 x 1000 Kombinationsmöglichkeiten. Kurzum: Der Cube kann nicht sämtliche Dimensionen für alle Kennzahlen vorberechnen. Das würde zu lange dauern und würde zuviel Speicherplatz in Anspruch nehmen – schließlich müssen die im voraus berechneten Ergebnisse auch irgendwo gespeichert werden.

In der Praxis hängen also die Vorteile eines Cubes sehr stark davon ab, wie der Cube konstruiert wurde. Je mehr Dimensionen und Kennzahlen ein Cube kennt, um so teurer wird es, sämtliche Kombinationen vorzuberechnen. Der Cube-Architekt legt fest, welche Kombinationen vorberechnet werden. Dabei muss er abwägen: je mehr Vorberechnung, umso kürzer werden die Abfragezeiten für die Benutzer, aber umso aufwendiger wird die Bereitstellung.

Während meiner Arbeit mit den Cubes musste ich feststellen, dass der Cube für viele Auswertungen nicht ausreicht. Als großen Nachteil sehe ich, dass der Aufbau des Cubes mir vorgibt, welche Analysen durchgeführt werden können, und welche nicht. Ich kann eben nur die verfügbaren Kennzahlen und Dimensionen verwenden. Möglicherweise existieren in der zugrunde liegenden Datenbank zusätzliche Informationen, die im Cube nicht abgebildet sind. Und steht das Design des Cubes einmal, kann es recht lange dauern, bis neue Ideen eingebaut werden können. Das ist jetzt natürlich ein sehr spezielles Problem und wird nicht jeden treffen. Besonders für Standard-Auswertungen und zusammenfassende Reports ist ein gut entworfener Cube herkömmlichen datenbankbasierten Ansätzen in Geschwindigkeit und Benutzerfreundlichkeit überlegen.

Wenn es aber mal genauer sein muss, und die Daten bis ins Mark durch die Mühle gedreht werden müssen, reicht der Cube nicht. Zwar können zur Laufzeit zusätzliche Kennzahlen erstellt werden, meiner Erfahrung nach kann sich das aber aufgrund der verzwickten MDX-Syntax je nach Problem doch sehr kompliziert gestalten. Außerdem basieren diese benutzerdefinierten Kennzahlen eben wieder auch nur auf den bereits vorhandenen Kennzahlen, bilden also keine zusätzlichen Informationen ab. Nicht selten weisen diese Kennzahlen zudem eine zu hohe Abfragezeit auf. Insbesondere Abfragen mit einem hohen Detailgrad machen Probleme. Cubes sind meistens nicht optimiert um beispielsweise eine Kennzahl pro Kunde auszurechnen. Der Cube gewinnt, wenn die Ergebnismenge überschaubar ist und die vorhandenen Dimensionen genügen, um das Problem zu lösen. Für andere Fragestellungen wird dann eine alternative Sicht auf die Unternehmensdaten benötigt.

Ende des ersten Teils

Geschafft. Wir sind am Ende des ersten Teils des MDX-Tutorials angekommen. Falls sich eine Frage ergeben hat, oder du einen Verbesserungsvorschlag hast, würde ich mich über eine E-Mail oder einen Kommentar weiter unten freuen. Übrigens gibt es für Interessierte in der Wikipedia einen Artikel, der die Cubes etwas fachlicher beschreibt als ich es hier getan habe.

Im nächsten Teil wird der Beispiel-Cube „Adventure Works“ vorgestellt, den Microsoft mitliefert und in dem wir unsere ersten MDX-Abfragen starten.

Zur MDX-Tutorial-Überrsicht