Christina Bräutigam

1. Einleitung

In der Praxis steht man oft vor der Herausforderung in einem Cube nicht nur die Ist-Zahlen, sondern auch die Plan- und/oder Forecast Werte abzubilden. Zur Lösung dieser Aufgabe gibt es u.a. zwei Möglichkeiten. Man könnte jeweils pro Measure weitere Measures anbieten, welche die Plan- und Forecast Werte abbilden würden oder man steuert die „Version“ über eine Dimension Version. Diese Dimension ist manch einem auch unter dem Namen Szenario bekannt. Eine DimVersion erlaubt zum einen benutzerfreundliche Vergleiche der jeweiligen Zeitebenen und zum anderen kann man zusätzliche Funktionalitäten wie YearToDate, Vorjahr oder YearEnd einbauen. In diesem Blogbeitrag möchte ich auf die letzte Variante, die Umsetzung einer DimVersion eingehen. Vorab möchte ich die Vorteile der beiden Varianten einander gegenüberstellen.

2. Vorteile einer Version Dimension

Die nachstehenden Vorteile bietet eine Versions Dimension gegenüber einer Umsetzung mittels zusätzlicher Measures für z.B. Plan- und Forecast-Zahlen.

          • Minimaler Aufwand bei der Einbindung neuer Versionen eines Measures im Cube
      • Einbau zusätzlicher Funktionalitäten wie direkte YearEnd -, YearTodate- oder Vorjahres- Vergleiche sind nur einmalig im Cube Skript zu implementieren und dann für sämtliche angebundene MGs nutzbar
  • Benutzerfreundliche Vergleiche der jeweiligen „Zeitebenen“/“Versionen“ verschiedener Measures

3. Nachteile der Version Dimension bzw. Vorteile einer Umsetzung über zusätzliche Kennzahlen

Die Entscheidung für eine der beiden Varianten ist natürlich projektabhängig. Hat man z.B. im Projekt PowerUser, welche keine tiefen MDX Kenntnisse besitzen, aber in der Lage sein sollen, Berichte selbst zu bauen, würde man die Lösung mit den zusätzlichen Kennzahlen wählen. Die Gründe hierfür wären:

  • Umsetzung einfacher Berechnungen, z.B. Differenz der Ist- und Plan-Werte, übersteigt die Möglichkeiten der Power User
  • Einbindung der bestimmter Versionen einer Kennzahl ohne MDX Kenntnisse schwer möglich

4. Relationale Umsetzung der DimVersion

Es wird statisch eine Tabelle angelegt mit einer ID Spalte und den nachstehenden beispielhaften Versions-Ausprägungen:

  • IST AJ
  • IST VJ
  • PLAN AJ
  • PLAN VJ
  • IST AJ – PLAN AJ
  • IST AJ – PLAN AJ %
  • IST YearToDate VJ
  • IST YearToDate AJ

Die nachstehende Tabelle bildet die oben verwendeten Abkürzungen sowie ihre Bedeutungen ab.

Abkz.

Einheit

AJ

Aktuelles Jahr

VJ

Vorjahr

YearToDate

Year To Date

IST

Ist

PLAN

Plan

%

relative Abweichung

Desweiteren sind die Faktentabellen um die jeweiligen Version IDs zu erweitern.

5. Cubeseitige Umsetzung der DimVersion

Die Dimension wird im Cube angelegt und mit den Measure Groups verschnitten.

Die eigentliche Entwicklungsarbeit findet im Cube Skript statt.

An dieser Stelle werde ich nicht den kompletten Code präsentieren, sondern nur auf die Umsetzung von zwei Versions Ausprägungen eingehen: Abweichung der Ist Zahlen von den Plan Zahlen absolut sowie in Prozent. Im Cube existiert eine Datumsdimension „Datum“ mit einer Jahr-Quartal-Monat Hierarchie.

//%DimVersion – IST AJ – PLAN AJ %

 

([Version].[Version].&[IST AJ – PLAN AJ],

 [Datum].[Jahr].[Jahr],  

 [Datum].[Quartal].allmembers,

 [Datum].[Monat].allmembers

)

= [Version].[Version].&[IST AJ] – [Version].[Version].&[PLAN AJ];   

 

//<<–%DimVersion – IST AJ – PLAN AJ %

 

 

//%DimVersion – IST AJ – PLAN AJ% %–>>

 

([Version].[Version].&[IST AJ – PLAN AJ %],

 [Datum].[Jahr].[Jahr],  

 [Datum].[Quartal].allmembers,

 [Datum].[Monat].allmembers

)

= IIF([Version].[Version].&[PLAN AJ]=0,NULL,[Version].[Version].&[IST AJ – PLAN AJ]/[Version].[Version].&[PLAN AJ]);   

 

//<<–%DimVersion – IST AJ – PLAN AJ% %

 

Zur Gewährleistung der Benutzerfreundlichkeit setzt man als Default Member der Dimension Version den Member „IST AJ“. Somit werden standardmäßig die aktuellen Zahlen abgebildet.

ALTER CUBE CURRENTCUBE

UPDATE DIMENSION [Version],

DEFAULT_MEMBER = [Version].[Version].&[IST AJ];  

 

Zur korrekten Darstellung der relativen Abweichung im % Format wird mit der nachstehenden Scope Anweisung gearbeitet.

SCOPE ([Version].[Version].&[IST AJ – PLAN AJ %]);  

    Format_String(THIS)="#,##0.00%;-#,##0.00%";  

END SCOPE;

6. Resümee

Die Vorteile einer Version Dimension sprechen für sich. Allerdings sind MDX Kenntnisse bei der Umsetzung erforderlich. Somit muss man je nach Projekt-Anforderungen seine Entscheidung fällen.