CiAgICA8IS0tIExpbmtlZEluIC0tPgogICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgIF9saW5rZWRpbl9wYXJ0bmVyX2lkID0gIjEyMzUwNzMiOwogICAgICAgIHdpbmRvdy5fbGlua2VkaW5fZGF0YV9wYXJ0bmVyX2lkcyA9IHdpbmRvdy5fbGlua2VkaW5fZGF0YV9wYXJ0bmVyX2lkcyB8fCBbXTsKICAgICAgICB3aW5kb3cuX2xpbmtlZGluX2RhdGFfcGFydG5lcl9pZHMucHVzaChfbGlua2VkaW5fcGFydG5lcl9pZCk7CiAgICA8L3NjcmlwdD48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICAgICAgKGZ1bmN0aW9uKCl7dmFyIHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0IilbMF07CiAgICAgICAgICAgIHZhciBiID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7CiAgICAgICAgICAgIGIudHlwZSA9ICJ0ZXh0L2phdmFzY3JpcHQiO2IuYXN5bmMgPSB0cnVlOwogICAgICAgICAgICBiLnNyYyA9ICJodHRwczovL3NuYXAubGljZG4uY29tL2xpLmxtcy1hbmFseXRpY3MvaW5zaWdodC5taW4uanMiOwogICAgICAgICAgICBzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGIsIHMpO30pKCk7CiAgICA8L3NjcmlwdD4KICAgIDxub3NjcmlwdD4KICAgICAgICA8aW1nIGhlaWdodD0iMSIgd2lkdGg9IjEiIHN0eWxlPSJkaXNwbGF5Om5vbmU7IiBhbHQ9IiIgc3JjPSJodHRwczovL3B4LmFkcy5saW5rZWRpbi5jb20vY29sbGVjdC8/cGlkPTEyMzUwNzMmZm10PWdpZiIgLz4KICAgIDwvbm9zY3JpcHQ+CiAgICA8IS0tIEVuZCBMaW5rZWRJbiAtLT4KICAgIA==
Generic filters
Exact matches only
Search in title
Search in excerpt
Search in content

Analysekontext einstellen

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).

2013-07-19_crew_Cockpit mit Analysewerten in DeltaMaster mit korrekter Sichteinstellung

Abb. 1: Cockpit mit Analysewerten in DeltaMaster mit korrekter Sichteinstellung

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).

2013-07-19_crew_Analysekontext des Analysewertes UmsatzAbb. 2: Analysekontext des Analysewertes Umsatz

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).

2013-07-19_crew_neue berechnete Kennzahl Nettoumsatz

Abb. 3: Neue berechnete Kennzahl Nettoumsatz

Wir sehen in der “Sicht” wird weiterhin alles korrekt angezeigt (vgl. Abb. 4). DeltaMaster übernimmt korrekt den Analysekontext aus den Ursprungskennzahlen.

2013-07-19_crew_Berechneter Nettoumsatz in DeltaMaster mit korrekter Sichteinstellung

Abb. 4: Berechneter Nettoumsatz in DeltaMaster mit korrekter Sichteinstellung

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.

2013-07-19_crew_Nettoumsatz aus MDX-Skript erzeugt falsche 'Sicht'

Abb. 5: Nettoumsatz aus MDX-Skript erzeugt falsche ‘Sicht’

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.

2013-07-19_crew_Falscher Analysekontext im Nettoumsatz

Abb. 6: Falscher Analysekontext im Nettoumsatz

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).

2013-07-19_crew_Nettoumsatz aus MDX-Skript mit korrekter SichteinstellungAbb. 7: Nettoumsatz aus MDX-Skript mit korrekter Sichteinstellung

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.