Liebe Datenanalysten,
wir kommen zurück auf die Frage, wie man Business Intelligence einfacher macht, vor allem für die vielen Berichtsempfänger, die ihre Berichte nicht selbst erstellen, sondern mit interaktiven Berichten versorgt werden. Ein Knackpunkt dabei sind die Filter, die die Berichtsempfänger selbst einstellen können: Je weniger Filter, je besser sie zur Aufgabe, zum Anwender, zur Situation passen, desto einfacher wird es; je mehr Filter, desto mehr Freiheiten hat der Anwender und desto mehr muss er sich darum kümmern und mit der Komplexität der Welt auseinandersetzen. In der letzten Ausgabe hatten wir den für die Vereinfachung der Oberfläche besonders wichtigen Filterkontext erläutert. Dieses Mal zeigen wir, wie man diesen Filterkontext dynamisch festlegt, um die Filtermöglichkeiten eines Berichts sowie die voreingestellte Standardauswahl individuell und doch automatisch zu gestalten.
Herzliche Grüße
Ihr Team von Bissantz & Company
Mit dem sogenannten Filterkontext (Sichtkontext) steuert man in DeltaMaster, welche Filtermöglichkeiten im Präsentationsmodus zur Verfügung stehen sollen. Dadurch ist die Anwendung für Berichtsempfänger leichter zu bedienen: Sie müssen insgesamt weniger einstellen, weil die wichtigen Einstellungen bereits automatisch gesetzt wurden; und dort, wo etwas einzustellen ist, ist die Auswahl im Menü so eingeschränkt, dass nur sinnvolle Merkmale zur Verfügung stehen. Einen Überblick über die Funktionsweise des Filterkontexts finden Sie in den DeltaMaster clicks 154 (08/2017).
Dieses Mal wollen wir vertiefen, wie man den Filterkontext dynamisch gestaltet, sodass Zusammenhänge in den Daten oder auch Faktoren von außerhalb berücksichtigt werden, insbesondere das aktuelle Datum und der aktuelle Benutzer.
Dabei interessieren uns zwei Anwendungsfälle:
- eine dynamische Einschränkung der Auswahlmöglichkeiten und
- eine dynamische Standardauswahl (Default-Auswahl).
Es geht also um die Fragen: Aus welchen Elementen soll ein Anwender im Präsentationsmodus auswählen können und welches Element soll automatisch voreingestellt sein, wenn der Anwender den Bericht zum ersten Mal öffnet? Oder, bildlich gesprochen: Welche Einträge soll DeltaMaster im Menü der Filterleiste anbieten und welche davon sollen zu Anfang bereits selektiert sein?
Die Dynamik rührt in beiden Fällen daher, dass die infrage kommenden Elemente nicht allein aus dem Analysemodell übernommen oder im Bearbeitungsmodus explizit festgelegt werden; vielmehr ermittelt DeltaMaster erst bei der Nutzung der Berichte im Präsentationsmodus, welche Elemente jeweils angeboten werden bzw. automatisch ausgewählt sein sollen.
Dazu lassen sich die Auswahlmöglichkeiten und die Default-Auswahl mithilfe einer Datenbankabfrage beschreiben: bei OLAP-Datenbanken in der Abfragesprache MDX, bei relationalen Datenbanken in SQL.
Den relationalen Fall behandeln wir in der nächsten clicks-Ausgabe, dieses Mal geht es um MDX. An diesen Stichworten merken Sie schon: Dies ist eine Angelegenheit für Berichtsredakteure und Anwendungsadministratoren. Für Berichtsempfänger fassen wir sie im folgenden Abschnitt zusammen, Redakteure und Administratoren lesen weiter – denn sie können ihren Berichtsempfängern viel Gutes damit tun.
Management Summary
DeltaMaster-Berichte können so konfiguriert werden, dass sich die Filtermöglichkeiten und die voreingestellten Filter im Präsentationsmodus automatisch an sich ändernde Datenlagen und Einsatzbedingungen anpassen. Das vereinfacht die Bedienung und trägt dazu bei, die Anzahl der Berichte zu reduzieren. Insbesondere lassen sich die folgenden Zusammenhänge berücksichtigen:
a) Zusammenhänge zwischen Filtern und Kennzahlen (Analysewerten)
Beispiel: In der Zeitdimension soll man nur diejenigen Monate auswählen können, für die Ist-Umsätze vorliegen. Die Monate in der Zukunft, für die es nur Plan-Werte gibt, sollen im aktuellen Bericht nicht auswählbar sein.
b) Zusammenhänge zwischen Filtern und anderen Filtern
Beispiel: In der Produktdimension soll man nur diejenigen Produktgruppen oder Produkte auswählen können, für die das aktuelle Vertriebsteam zuständig ist. Dabei gilt als aktuelles Vertriebsteam dasjenige, das in einem anderen Filtermerkmal ausgewählt ist.
c) Zusammenhänge zwischen Filtern und dem aktuellen Datum (Systemzeit)
Beispiel: In der Zeitdimension soll automatisch der jeweils aktuelle Monat ausgewählt sein.
d) Zusammenhänge zwischen Filtern und dem jeweiligen Benutzer(namen)
Beispiel: Wenn der Benutzer „chairbaumann“ einen Bericht öffnet, soll in der Dimension Vertriebsteam das Element Baumann ausgewählt sein; öffnet der Benutzer „chairhohlmaier“ denselben Bericht, so soll das Element Hohlmaier ausgewählt sein.
Auch andere Kriterien innerhalb und außerhalb der DeltaMaster-Anwendung können berücksichtigt werden – alles, was die Abfragesprachen so hergeben; besonders gefragt sind aber das Datum und der Benutzername. Für Ordner steht der Mechanismus ebenfalls zur Verfügung, wie in den DeltaMaster clicks 154 (08/2017) erläutert; hier konzentrieren wir uns nur auf Berichte.
Einstellungen: im Filterkontext
Die nötige Anpassung der Berichte nehmen Berichtsredakteure an zentraler Stelle vor, nämlich in den Berichtseigenschaften (Kontext von Berichten in der Berichtsliste) auf der Registerkarte Filterkontext.
Über das Kontextmenü der Auswahl, unterhalb der Hierarchieebenen, können Sie die Auswahlmöglichkeiten per MDX-Ausdruck einschränken. Mit der Option darüber lässt sich ebenfalls die Auswahl einschränken, jedoch statisch: Die im Präsentationsmodus anzubietenden Elemente werden einzeln oder ebenenweise festgelegt und stehen dann in jeder Situation unverändert zur Verfügung. Zur dynamischen Definition hingegen ist MDX erforderlich.
Auch die zweite hier erörterte Einstellung, die Default-Auswahl, wird auf der Registerkarte Filterkontext getroffen, über das Kontextmenü von Hierarchien. Eine statische Variante, ohne MDX, ist hier nicht verfügbar – und nicht erforderlich: Dies wäre ja nichts anderes als der Berichtsfilter (die Sicht), also die Kombination ausgewählter Filtermerkmale, mit der der Bericht gespeichert wurde.
Multidimensional Expressions
In beiden Fällen erstellen und bearbeiten Sie den MDX-Ausdruck mit dem MDX-Editor von DeltaMaster. Auch die Anforderungen an die Rückgabe des Ausdrucks sind gleich: DeltaMaster erwartet ein Element (Member) oder eine Menge von Elementen (Set) aus der betreffenden Dimension. Für eine eingeschränkte Auswahl ist eine Menge typisch, also mehrere Elemente. Die Default-Auswahl ist meist genau ein Element; eine Menge ist ebenfalls denkbar und entspricht einer Mehrfachauswahl.
Um die gewünschten Abhängigkeiten auszudrücken, nehmen Sie im MDX-Ausdruck Bezug auf Objekte bzw. Gegebenheiten außerhalb der jeweiligen Dimension. Für die oben beschriebenen vier Zusammenhänge greift man typischerweise auf die folgenden Konstrukte zurück. Die MDX-Beispiele beziehen sich auf Microsoft SQL Server Analysis Services.
- Analysewerte:
Um bestimmte Werte zu berücksichtigen, etwa den Umsatz oder den Deckungsbeitrag, geben Sie die entsprechenden Elemente aus der Analysewertdimension an, zum Beispiel „[Measures].[Umsatz]“ oder „[Measures].[DB]“. Alle verfügbaren Analysewerte werden im MDX-Editor im Strukturbaum links unten angezeigt, im Zweig Analysewerte. Per Doppelklick oder Drag-and-drop übernehmen Sie sie in den MDX-Ausdruck im oberen Teil des Editors.
- Auswahl in anderen Dimensionen:
Um das oder die in einer anderen Dimension ausgewählten Elemente zu referenzieren, verwenden Sie die MDX-Funktion „CurrentMember“, zum Beispiel „[Vertrieb].[Vertrieb].CurrentMember“, oder die Kurzschreibweisen (Variablen) von DeltaMaster, etwa „<view7>“, wenn 7 die Id der Dimension Vertrieb ist. Die Id einer Dimension ermitteln Sie im MDX-Editor im Strukturbaum links unten, indem Sie bei gedrückter Alt-Taste mit der Maus auf die Dimension zeigen.
- Datum:
Das Systemdatum kann mithilfe von MDX-Funktionen ausgelesen, in eine Zeichenfolge (String) umgewandelt und in dieser Form zur Auswahl oder Referenzierung von Elementen verwendet werden. Das erledigt ein Ausdruck wie dieser:
StrToMember(”Periode].[Periode].[” + Format(Now(), ”MMM yyyy”) + ”]”)
Dabei ist die genaue Benennung der Perioden zu beachten: Sie muss zu den Systemdatumsformaten passen oder ist entsprechend zu transformieren. Beispielsweise wird im Deutschen der März mit „Mrz“ abgekürzt, nicht „Mär“, dementsprechend sollte der Monat auch in der Datenbank so heißen.
- Benutzername:
Auf gleiche Weise lässt sich der Name des aktuellen Windows-Benutzers aufgreifen. Im folgenden Ausdruck wird er mithilfe von MDX-Funktionen ausgelesen, um den Domainnamen (vor dem Schrägstrich) verkürzt und schließlich zur Auswahl eines Elements in einer Dimension verwendet, in der die Systembenutzer abgebildet sein mögen.
StrToMember(”[Benutzer].[Benutzer].[” + Mid(UserName(), InStr(UserName(), ””) +1) + ”]”)
In diesem Beispiel wird der Benutzername direkt zur Auswahl eines Dimensionselements verwendet. Alternativ könnte man ihn in Bedingungen verwenden, um abhängig vom Benutzernamen bestimmte Elemente etwa in einer Organisations- oder Kundendimension zu selektieren.
Wenn Sie sowohl die Auswahl einschränken als auch ein Default-Element festlegen, sollte dieses in der Auswahl enthalten sein, damit die Anwender nach dem Ändern der Filter zum Default-Element zurückschalten können. Technisch sind die beiden Einstellungen zwar unabhängig und es wäre möglich, ein Element zum Default zu erklären, das die Anwender nicht interaktiv auswählen können – dies erschwert jedoch die Bedienung und ist im Allgemeinen nicht zu empfehlen.
Die Default-Auswahl sollte keine Dimensionen referenzieren, für die ebenfalls eine Default-Auswahl definiert ist (es soll also keine mehrstufige Default-Auswahl geben).
Wirkung im Präsentationsmodus
Die Einschränkung der Auswahl und die Default-Auswahl wirken sich nur im Präsentationsmodus aus, wie der Filterkontext insgesamt.
Bei einer eingeschränkten Auswahl ergänzt DeltaMaster automatisch die Elternelemente (die aggregierten Elemente auf höheren Ebenen). Wenn der MDX-Ausdruck beispielsweise nur Monate zurückliefert, zeigt DeltaMaster automatisch auch die entsprechenden Quartale und Jahre an.
Die als Default-Auswahl hinterlegten Abfragen werden ausgeführt, sobald der Anwender einen Bericht oder Ordner zum ersten Mal öffnet – und nur dieses eine Mal. DeltaMaster setzt die Filter dabei entsprechend den Abfrageergebnissen und behält sie bei, bis der Anwender die Filter ändert oder die Sitzung beendet. Insofern verhalten sich die Berichte so, als hätte ein Berichtsredakteur die Filter just so eingestellt und gespeichert. Für die Anwender im Präsentationsmodus ist kein Unterschied festzustellen; allenfalls werden sie sich freuen, dass die Berichte immer „richtig“ voreingestellt sind.
Beispiele
Mit den Hinweisen zum Aufbau der MDX-Ausdrücke können wir für die eingangs beschriebenen Aufgaben Lösungen in unserer Referenzanwendung Chair vorschlagen.
a) Perioden einschränken auf Monate mit Ist-Umsätzen
Der folgende Ausdruck schränkt die Zeitdimension so ein, dass nur diejenigen Perioden auswählbar sind, für die in der Wertart ein Umsatz größer als Null vorliegt.
Filter( [Periode].[Periode].[Monat].Members,
([Measures].[Umsatz], [Wertart].[Wertart].[Wertart].[Ist]) > 0 )
Im Prinzip ließen sich mit solchen Filterausdrücken auch analytische Kriterien heranziehen, zum Beispiel die 10 größten Kunden oder nur Kunden ab einem bestimmten Mindestumsatz. Solche Kriterien sind jedoch in der Achsendefinition des Berichts meist besser aufgehoben als in der Filterauswahl.
b) Produkte einschränken entsprechend ausgewähltem Vertriebsteam
Der folgende Ausdruck schränkt die Produktdimension ein, sodass nur diejenigen Produkte auswählbar sind, die das aktuelle Vertriebsteam verantwortet. Die Zuordnung von Produkten und Vertriebsorganisation ist hier nicht im Modell abgebildet, sondern ergibt sich implizit daraus, welches Team mit welchen Produkten Umsatz erzielt hat.
Filter( [Produkt].[Produkt].[Produkt].Members,
([Measures].[Umsatz], [Wertart].[Wertart].[Wertart].[Ist], [Periode].[Periode].[Alle Jahre],
<view7>)
> 0 )
Darin steht „<view7>“ für das aktuell in der Dimension Vertrieb ausgewählte Element, wie oben erläutert; alternativ hätte man „[Vertrieb].[Vertrieb].CurrentMember“ notieren können.
Der Ausdruck setzt voraus, dass in der referenzierten Vertriebsdimension genau ein Element ausgewählt ist, nicht mehrere. Um dies sicherzustellen, sollte man zusätzlich für diese Dimension die Mehrfachauswahl im Filterkontext deaktivieren (Kontextmenü der Dimension). Der Zeitbezug wurde in diesem Beispiel weit gefasst („alle Jahre“) – dies könnte man ebenfalls dynamisch an den aktuellen Berichtsfilter binden.
c) Aktuellen Monat als Default-Auswahl voreinstellen
Der folgende und oben bereits angegebene Ausdruck bewirkt, dass DeltaMaster beim Öffnen der Anwendung in der Zeitdimension den Monat auswählt, der dem aktuellen Datum gemäß Systemuhr entspricht.
StrToMember(”[Periode].[Periode].[” + Format(Now(), ”MMM yyyy”) + ”]”)
Für diesen Fall, dass die aktuelle Periode eines Berichts direkt aus dem Systemdatum abgeleitet (und nicht etwa in größeren Ausdrücken als Teil einer Bedingung verwendet) wird, gibt es seit DeltaMaster 6.1.6 eine Alternative:
In Grafischen Tabellen, bei denen der Magische Knopf Aktuell aktiviert ist, stellt DeltaMaster die Periode bei jedem Anzeigen des Berichts automatisch ein – und zwar so, wie es beim Modellieren auf der Seite Logik festgelegt ist.
Die Option mit dem Zusatz „Aktuelle Periode“ bewirkt ein dynamisches Verhalten, sodass sich die aktuelle Periode selbsttätig an das Systemdatum anpasst.
Das Systemdatum auszuwerten, ist vor allem in operativen Analysen und Berichten praktisch. Dabei wird jedoch nicht berücksichtigt, ob der Monat buchhalterisch abgeschlossen ist. Bei näherem Hinsehen stellt man fest, dass es unterschiedliche Interpretationen geben kann, welcher Monat als der aktuelle gelten soll. Eine verbreitete Variante ist es, den letzten Monat, für den es (Ist-)Umsätze gibt, zu wählen. Dadurch muss man den Bericht nicht umstellen, sobald neuere Daten vorliegen, sondern der Bericht sucht sich gewissermaßen selbst datengetrieben die neueste Periode. Dies ermöglicht der folgende Ausdruck:
Tail( Filter( [Periode].[Periode].[Monat].Members,
([Measures].[Umsatz], [Wertart].[Wertart].[Wertart].[Ist]) > 0 ), 1)
Die MDX-Funktion Tail gibt die angegebene Anzahl von Elementen oder Tupeln am Ende der angegebenen Menge zurück. Hier ist nur das letzte Element gefragt und deshalb die Anzahl der Tupel 1; die Menge ist ein Filterausdruck, der die Monate mit einem Ist-Umsatz größer Null liefert.
d) Vertriebsteam des aktuellen Benutzers als Default-Auswahl voreinstellen
Der folgende Ausdruck ähnelt dem aus Fall b), jedoch wird das aktuelle Vertriebsteam nicht anhand der Einstellung in der Filterleiste ermittelt, sondern über den Windows-Benutzernamen des aktuellen Benutzers.
Filter( [Produkt].[Produkt].[Produkt].Members,
([Measures].[Umsatz], [Wertart].[Wertart].[Wertart].[Ist], [Periode].[Periode].[Alle Jahre],
StrToMember(”[Vertrieb].[Vertrieb].[” + Mid(UserName(), InStr(UserName(), ””) +1) + ”]”))
> 0 )
Falls kein mit dem Benutzernamen übereinstimmendes Element existiert, führt dieser Ausdruck zu einem Fehler – mit dem DeltaMaster aber umgehen kann: Als Default-Auswahl wählt DeltaMaster dann das erste Element der obersten im Filterkontext zugelassenen Ebene aus; oft ist das das „All-Element“. Dadurch ist die Voreinstellung für den Bericht auch dann zumindest zweckmäßig, wenn die Vorgabe nicht erfüllt werden kann.
Tipps für Berichtsredakteure
Der Charme der MDX-Ausdrücke liegt darin, dass sie sehr flexibel auf die jeweils gültigen Einstellungen reagieren und den Bericht lebendig machen. Für die Entwicklung der Berichte haben sich die folgenden Arbeitsweisen bewährt.
- Abfrage in der Achsendefinition vorbereiten:
Bearbeiten Sie den für den Filterkontext benötigten MDX-Ausdruck zunächst in der Achsendefinition einer Grafischen Tabelle. Dadurch sind die Ergebnismengen leichter unter wechselnden Bedingungen zu beurteilen. - Abfrage als Benannte Menge speichern und wiederverwenden:
Mithilfe von Benannten Mengen (Named Sets) können Sie Abfragen an zentraler Stelle pflegen und wiederverwenden. Ist beispielsweise eine Default-Auswahl gemäß Benutzername oder Datum einmal definiert, werden Sie sie wahrscheinlich in mehreren Berichten nutzen. Zudem möchte man eine definierte Elementmenge sowohl in der Achsendefinition als auch im Filterkontext verwenden. Beim Editieren geben Sie als MDX-Ausdruck für die Einschränkung der Auswahl oder die Default-Auswahl dann lediglich den Namen der Menge an. Das Pflegen von Benannten Mengen gehört zum Modellieren: Seit DeltaMaster 6.1.6 lassen diese sich über einen Eintrag im Menü Modell (rechts) bearbeiten. - Bericht als Startbericht festlegen:
Wie erwähnt, wird die Abfrage der Default-Auswahl nur beim ersten Öffnen eines Berichts berechnet. Beim Entwickeln und Testen genügt es daher nicht, vom Bearbeitungs- in den Präsentationsmodus zu wechseln oder etwa den Bericht neu zu berechnen, sondern die Anwendung muss (erneut) geöffnet werden, um die Default-Auswahl in Aktion zu erleben. Zum Testen mag es eine Erleichterung sein, den Bericht, den Sie in Arbeit haben, als Startbericht festzulegen (Berichtseigenschaften, Registerkarte Allgemein) – zumindest vorübergehend, damit er nach dem Öffnen der Anwendung automatisch angezeigt wird und Sie die Vorauswahl in der Filterleiste überprüfen können.
Und vielleicht der wichtigste Tipp: Bei Fragen wenden Sie sich gerne an den Support und an Ihre Ansprechpartner!