Der im Blogbeitrag „Modellierung mehrerer Zeitdimensionen“ (https://www.bissantz.de/know-how/crew/modellierung-mehrerer-zeitdimensionen) beschriebene Ansatz, doppelte Strukturen im OLAP-Modell zu vermeiden, hat gegenüber dem Vorgehen „Verdopple die Daten“ (http://crew.bissantz.de/verdopple-die-daten) viele Vorteile. Die neue Vorgehensweise ist eleganter und spart vor allem beim relationalen Aufbereitungsprozess der Daten Zeit und Plattenplatz.
Der neue Modellierungsansatz beschreibt, wie mit Hilfe einer Schalterdimension versteckte Dimensionen angesteuert werden können. In diesem Blogbeitrag wird beschrieben, wie versteckte Analysewerte über eine Schalterdimension ihren Inhalt zum richtigen Zeitpunkt herausgeben.
Am besten lässt sich die neue Vorgehensweise mit dem Versteckspiel der Analysewerte am Beispiel einer Währungsumrechnung erklären. Hat man drei Analysewerte – sagen wir Umsatz, Kosten und Deckungsbeitrag – in drei Währungssichten (Belegwährung, Buchungskreiswährung und Konzernwährung) relational vorliegen, so kann man sie nach der alten Empfehlung wie folgt aufbereiten (vgl. Abb. 1).
Die Daten werden nach Währungssichten getrennt untereinander geschrieben. Bei vielen Belegmerkmalen (Artikelnummer, Vertreter, Kunde, Fakturaart etc.) müssen die Merkmale jedes Mal mitgeschrieben werden.
Der elegantere Weg sieht nun vor, die Analysewerte nebeneinander zu platzieren (vgl. Abb. 2).
Auf den ersten Blick erkennt man den Vorteil nicht. Das liegt zum einen daran, dass im Beispiel nur wenige Belegmerkmale verwendet wurden und somit nur wenige redundante Informationen eingespart werden konnten. Neben den drei aus Abb. 1 bereits genannten gibt es nun sechs neue Analysewerte für die Währungssichten; zudem gibt es auch noch zwei neue Währungsspalten. Die eine Spalte beschreibt die Belegwährung (hier „USD“), die andere die Buchungskreiswährung („CHF“). Die Konzernwährung ist immer „EUR“ und muss daher nicht extra aufgeführt werden.
Mit DeltaMaster Modeler kann nun das Modell aufgebaut werden. Die Dimensionen sind schnell angelegt (vgl. Abb. 3).
Auffällig ist hier eigentlich nur, dass für die Dimension Währung eine Ebene „Alle Währungen“ benötigt wird. Dies wird normalerweise so nicht gemacht (sonst würde man Äpfel und Birnen addieren), ist hier aber notwendig.
Für die Währung werden zwei „Role playing dimensions“ angelegt (vgl. Abb. 4).
Die Measuregroup, in die die zwei zusätzlichen Währungsdimensionen eingefügt wurden, sieht nun wie folgt aus (vgl. Abb. 5).
Leider können an dieser Stelle die Dimensionen „Belegwährung“ und „Buchungskreiswährung“ noch nicht auf unsichtbar gestellt werden. Eine (vorläufige) Behelfslösung sieht wie folgt aus: die Analysewerte werden angelegt. Dabei können die Werte versteckt werden, die der Anwender nicht sehen soll (vgl. Abb. 6). Bei den sichtbaren Werten wird das Präfix weggelassen.
Nun muss nur noch das Modell aufgebaut und das Script in der OLAP-Datenbank für die zwei Währungssichten wie folgt formuliert werden:
Scope ([Währungssicht].[Währungssicht].[Währungssicht].&[2]);
[Measures].[Umsatz] = ([Währungssicht].[Währungssicht].[Währungssicht].&[1],
[Measures].[BuW_Umsatz],
LinkMember ([Währung].[Währung].CurrentMember, [Buchungs
kreiswährung].[Währung]),
[Währung].[Währung].[Alle Währungen]) ;
[Measures].[Kosten] = ([Währungssicht].[Währungssicht].[Währungssicht].&[1],
[Measures].[BuW_Kosten],
LinkMember ([Währung].[Währung].CurrentMember, [Bu-chungskreiswährung].[Währung]),
[Währung].[Währung].[Alle Währungen]) ;
[Measures].[DB] = ([Währungssicht].[Währungssicht].[Währungssicht].&[1],
[Measures].[BuW_DB],
LinkMember ([Währung].[Währung].CurrentMember, [Bu-chungskreiswährung].[Währung]),
[Währung].[Währung].[Alle Währungen]) ;
End Scope;
Scope ([Währungssicht].[Währungssicht].[Währungssicht].&[3]);
[Measures].[Umsatz] = ([Währungssicht].[Währungssicht].[Währungssicht].&[1],
[Measures].[BW_Umsatz],
LinkMember ([Währung].[Währung].CurrentMember, [Beleg-währung].[Währung]),
[Währung].[Währung].[Alle Währungen]) ;
[Measures].[Kosten] = ([Währungssicht].[Währungssicht].[Währungssicht].&[1],
[Measures].[BW_Kosten],
LinkMember ([Währung].[Währung].CurrentMember, [Beleg-währung].[Währung]),
[Währung].[Währung].[Alle Währungen]) ;
[Measures].[DB] = ([Währungssicht].[Währungssicht].[Währungssicht].&[1],
[Measures].[BW_DB],
LinkMember ([Währung].[Währung].CurrentMember, [Belegwäh rung].[Währung]),
[Währung].[Währung].[Alle Währungen]) ;
End Scope
Für den Bereich (Scope) WährungssichtID 2 (Buchungskreiswährung) wird der Analysewert Umsatz definiert über den BW_Umsatz (Umsatz des Buchungskreises); in Abhängigkeit von der eingestellten Währung wird die Buchungskreiswährung gewählt (LinkMember) und auf „Alle Währungen“ gefiltert.
Das Ergebnis kann sich sehen lassen (vgl. Abb. 7):
Über die drei sichtbaren Analysewerte Umsatz, Kosten und Deckungsbeitrag (DB) lassen sich alle Währungssichten mit den dazugehörigen Währungen anzeigen.