Eine der Stärken von DeltaMaster ist, dass er dem Benutzer in der Anwendung Hilfestellung leistet und somit die Handhabung vereinfacht. Ein schönes Beispiel hierfür ist der Analysekontext. Sobald mehr als eine Measuregroup in einem Cube vorhanden ist, kann es Analysewerte geben, die sich nicht in alle Dimensionen aufgliedern lassen. Diese werden dann im Fenster “Sicht” eingeklammert dargestellt und der Text “() = gilt nicht für das aktuelle Cockpit” wird als Legende angezeigt.
Ärgerlich ist es, wenn der Analysekontext in einem Analysewert nicht richtig eingestellt ist und die oben beschriebene Logik damit nicht ordentlich funktionieren kann. Dies ist z.B. bei im MDX-Skript angelegten berechneten Analysewerten der Fall. Wie diese Klippe elegant umschifft werden kann, soll der folgende Blogbeitrag zeigen.
Nehmen wir unsere Beispieldatenbank Chair zur Hand und schauen uns die drei Kennzahlen Umsatz, Rabatt und Skonti an. Wir sehen in der Sicht, dass sich diese Kennzahlen nicht für die Deckungsbeitragsflussrechnung eignen, die Dimensionen “Indexvergleichsperiode” sowie “Sortimentmix” sind eingeklammert (vgl. Abb 1).
DeltaMaster erkennt automatisch, dass diese Analysewerte technisch nicht mit den Dimensionen verknüpft sind. Im Eigenschaftsdialog der Measure unter “Analysekontext” sind sie grau dargestellt (vgl. Abb. 2).
Nun wollen wir den Nettoerlös aus Umsatz – Rabatt – Skonti ausrechnen. Zunächst legen wir diesen Wert in DeltaMaster als neuen benutzerdefinierten Analysewert an und fügen ihn in das vorhandene Cockpit ein (vgl. Abb. 3).
Wir sehen in der “Sicht” wird weiterhin alles korrekt angezeigt (vgl. Abb. 4). DeltaMaster übernimmt korrekt den Analysekontext aus den Ursprungskennzahlen.
Hinweis:
Vorsicht beim Austauschen von Analysewerten in diesem Dialog. Der Sichtkontext der berechneten Measure wird nur einmalig beim Anlegen festgesetzt, danach muss er manuell angepasst werden!
Nun schauen wir uns das Verhalten an, wenn dieselbe Berechnung in Visual Studio im MDX-Skript hinterlegt wird.
CREATE MEMBER CURRENTCUBE.[MEASURES].[Nettoumsatz (mdx)] AS [Measures].[Umsatz] - [Measures].[Skonti] - [Measures].[Rabatt], VISIBLE = 1;
Auch diesen Wert fügen wir, nach Neustart von DeltaMaster, in das Cockpit ein. Und siehe da, die Darstellung in der Sicht passt nicht mehr (vgl. Abb. 5). Die zwei Dimensionen sind nicht mehr eingeklammert.
Der Grund ist schnell gefunden: Der Analysekontext des im MDX-Skript berechneten Analysewertes stimmt nicht (vgl. Abb. 6). Alle Dimensionen sind schwarz und somit mit dem Analysewert verbunden.
Es gibt nun zwei Möglichkeiten, dies zu korrigieren.
- Variante 1
In DeltaMaster kann man Dimensionen ausgrauen, indem man mit gedrückter Alt-Taste und rechter Maustaste die Dimension anklickt. Die Farbänderung signalisiert den Statuswechsel von verknüpfter zu nicht verknüpfter Dimension. Dies muss dann allerdings in allen Analysesitzungen/Anwendungen nachgezogen werden. - Variante 2
Viel eleganter und mit weniger Arbeit verbunden ist dieser Weg: Man kann dem angelegten Analysewert schon im MDX-Skript den Analysekontext mitgeben. Die Eigenschaft
“ASSOCIATED_MEASURE_GROUP” weist der Kennzahl eine Measuregroup zu.
CREATE MEMBER CURRENTCUBE.[MEASURES].[Nettoumsatz (mdx)] AS [Measures].[Umsatz] - [Measures].[Skonti] - [Measures].[Rabatt], VISIBLE = 1, ASSOCIATED_MEASURE_GROUP = 'Deckungsbeitragsrechnung' ;
Nach dem Neustart von DeltaMaster und Synchronisation des Analysemodells erhalten wir das gewünschte Ergebnis (vgl. Abb. 7).
Hinweis: Auf die Einstellungen des Analysekontextes ist vor allem bei Planungsanwendungen genau zu achten. Besonders in Kombination mit Wertweitergaben kann eine ungenaue Einstellung zu falschen “Update-Cube”-Ausdrücken führen und sehr lange Laufzeiten nach sich ziehen.