Dieser Blogbeitrag zeigt, was zu tun ist, damit Berichtsempfänger im Präsentationsmodus in einem Bericht per Filterleiste Analysewerte ändern können. Die Mittel dafür sind eine Hilfsdimension und ein neuer Analysewert. Im ersten Teil werden die Schritte vorgestellt, die in DeltaMaster umgesetzt werden; im zweiten Teil folgen die Schritte im Back-end.
Zielsetzung
Am Ende des Beitrags wissen Sie, wie Sie Berichtsempfängern die Möglichkeit an die Hand geben, in einem Bericht einen Analysewert einfach und komfortabel austauschen zu können. Als Ausgangsbericht nutzen wir dazu einen Umsatzbericht aus unserer Referenzanwendung Chair, in dem die Kundengebiete den Produktgruppen gegenübergestellt werden:
Nun wollen wir eine Möglichkeit schaffen, dass Berichtsempfänger den Analysewert von Umsatz auf Deckungsbeitrag ändern können.
Umsetzung
Zuerst wählen wir uns eine vorhandene Dimension, die wir in diesem Bericht nicht benutzen, in der Referenzanwendung Chair könnte das z. B. die Dimension Einheit sein.
In dieser Dimension legen wir nun für jeden Analysewert, den wir auswählbar machen wollen, ein berechnetes Element an, indem wir auf das Defaultmember verweisen und die Solve_Order auf 0 stellen, analog zu Abbildung 2 für „DB“.
Das berechnete Element „DB“ finden Sie anschließend in der Dimension:
Nachdem diese Vorbereitung getroffen ist, müssen wir nun dafür sorgen, dass diese Auswahl in dem Bericht die gewünschte Veränderung des Analysewerts erzeugt.
Dazu legen wir nun einen benutzerdefinierten Analysewert an, indem wir bei den Basisanalysewerten die Analysewerte, die wir als berechnete Elemente angelegt haben, auswählen und dann mit einer Fallunterscheidung ansteuern:
Und natürlich auch das MDX:
CASE
WHEN [Einheit].[Einheit].currentMember is [Einheit].[Einheit].[temp 6] --DB
THEN #6
WHEN [Einheit].[Einheit].currentMember is [Einheit].[Einheit].[temp 5] --Lohn
THEN #2 * (-1)
WHEN [Einheit].[Einheit].currentMember is [Einheit].[Einheit].[temp 4] -- Skonti
THEN #1 * (-1)
WHEN [Einheit].[Einheit].currentMember is [Einheit].[Einheit].[temp 3] -- Ma-terial
THEN #3 * (-1)
WHEN [Einheit].[Einheit].currentMember is [Einheit].[Einheit].[temp 2] -- Ra-batt
THEN #4 * (-1)
WHEN [Einheit].[Einheit].currentMember is [Einheit].[Einheit].[temp] -- Um-satz
THEN #5
END
In dem MDX fragen wir das aktuelle Element der Einheit ab und je nachdem, welches berechnete Element ausgewählt ist, nimmt der benutzerdefinierte Analysewert den Wert des entsprechenden Basisanalysewerts an.
Dem aufmerksamen Leser wird aufgefallen sein, dass ich die Kosten mit dem Faktor (-1) multipliziere. Dies liegt daran, dass wir dem Analysewert einen Faktor geben müssen, nämlich positiv oder negativ. Damit nun Kosten rot dargestellt werden, da ich mich für Faktor positiv entschieden habe, stelle ich diese Werte negativ dar.
Nun fehlt noch eine dynamische Bezeichnung für den Analysewert. Hierzu bietet sich das MDX {} an, wobei X die DimensionID der gewählten Hilfsdimension ist, also in meinem Fall der Einheit.
Im Anschluss benutzen wir diesen Analysewert im Bericht, in dem der Analysewert im Präsentationsmodus austauschbar sein soll.
Bewertung des Endergebnisses
Im fertigen Bericht kann nun umgeschaltet werden von z.B. Umsatz auf DB:
Dieses Endergebnis kann sich sehen lassen. Wir können zwischen den Analysewerten hin- und herwechseln. Als Manko könnte man anbringen, dass man die verwendete Dimension, Hierarchie und Ebene nicht einfach umbenennen kann, da diese ja in einen anderen Bericht greifen könnte und dann auch Einheit heißen soll. Ebenso tauchen die berechneten Elemente stets in der Dimension auf, die man in anderen Berichten anderweitig benutzt. Weiterhin ist eine Anpassung auch relativ aufwendig, insbesondere bei sehr vielen Analysewerten.
Wie man dies nun im Backend optimieren kann, sodass man nur noch einen relationalen Eingabebericht mit DeltaMaster pflegen muss und vermeidet, dass das MDX noch größer wird, erfahren Sie im zweiten Teil des Beitrags.
Kommentare
Sie müssten eingeloggt sein um Kommentare zu posten..