07.07.2015

Abbildung von Ist-, Plan-, Forecast-, YearToDate- oder YearEnd Werte im Cube – Umsetzung über zusätzliche Kennzahlen versus Szenario Dimension

Technical Value

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.

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

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

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.

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.

  1. //%DimVersion - IST AJ - PLAN AJ %
  2. ([Version].[Version].&[IST AJ - PLAN AJ],
  3.  [Datum].[Jahr].[Jahr],  
  4.  [Datum].[Quartal].allmembers,
  5.  [Datum].[Monat].allmembers
  6. )
  7. = [Version].[Version].&[IST AJ] - [Version].[Version].&[PLAN AJ];   
  8. //<<--%DimVersion - IST AJ - PLAN AJ %
  9. //%DimVersion - IST AJ - PLAN AJ% %-->>
  10. ([Version].[Version].&[IST AJ - PLAN AJ %],
  11.  [Datum].[Jahr].[Jahr],  
  12.  [Datum].[Quartal].allmembers,
  13.  [Datum].[Monat].allmembers
  14. )
  15. = IIF([Version].[Version].&[PLAN AJ]=0,NULL,[Version].[Version].&[IST AJ - PLAN AJ]/[Version].[Version].&[PLAN AJ]);   
  16. //<<--%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.

  1. ALTER CUBE CURRENTCUBE
  2. UPDATE DIMENSION [Version],
  3. DEFAULT_MEMBER = [Version].[Version].&[IST AJ];

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

  1. SCOPE ([Version].[Version].&[IST AJ - PLAN AJ %]);  
  2.     Format_String(THIS)="#,##0.00%;-#,##0.00%";  
  3. END SCOPE;

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.

Teilen auf

Newsletter Anmeldung

Abonnieren Sie unseren Newsletter!
Lassen Sie sich regelmäßig über alle Neuigkeiten rundum ORAYLIS und die BI- & Big-Data-Branche informieren.

Jetzt anmelden