Benannte Mengen ermöglichen seit dem letzten Release eine dynamische Definition der X-Achse einer Zeitreihenanalyse. Wir illustrieren die Nützlichkeit dieses neuen Features anhand von Anwendungsbeispielen.
X-Achse einer Zeitreihenanalyse
Mit dem letzten Release 6.5.3.2 unserer Business-Intelligence-Software DeltaMaster hat die Zeitreihenanalyse ein neues Feature erhalten. Der dargestellte Zeitraum der Zeitreihenanalyse lässt sich mit einer benannten Menge erzeugen.
Da wir benannte Mengen auch mit MDX-Ausdrücken erzeugen können, öffnet sich hiermit eine neue Welt: Wir können den umfangreichen Befehlsumfang in MDX nutzen, um die X-Achse, also den dargestellten Zeitraum der Zeitreihenanalyse, genau an unsere Wünsche anzupassen:
In diesem Beispiel wird ausgehend vom aktuellen Monat September 2023 eine lineare Regression auf den letzten 12 Monaten durchgeführt und die Prognose für die nächsten 3 Monate erstellt. Mit der dynamisch definierten benannten Menge können wir die Zeitachse auf die interessanten, angesprochenen Monate von Oktober 2022 bis Dezember 2023 einstellen.
Liegt der nächste Monat Oktober 2023 vor, müssen wir nur den aktuellen Monat auf 10/2023 einstellen und die gesamte Analyse – inklusive des Berichtstitels – passt sich an den neuen Zeitraum an:
Hier haben wir ein gleitendes Fenster verwendet. Wir zeigen weiter unten, wie wir dieses anlegen können.
Vollständige Automatisierung mit Today
Arbeiten wir mit dem Publisher oder mit Default-Auswahlen eines Berichtes, können wir den Today-Befehl einsetzen.
Beispielsweise bewirkt today.month.lag(1) in der Defaultauswahl im Tab Filterkontext der Berichtseigenschaften der Zeitreihenanalyse, dass sich der Zeitreihenanalyse-Bericht beim Öffnen der Sitzung am heutigen Tage (d. h., am 26.9.2023) auf den letzten vollständigen Monat 08/2023 einstellt:
Diesen Bericht legen wir somit für die Ewigkeit an und wir müssen ihn nicht mehr anrühren. Der ausgewählte Monat passt sich über die Defaultauswahl an das Rechnerdatum an. Mit der dynamisch definierten benannten Menge ist auch der dargestellte Zeitraum von September 2022 bis November 2023 für den ausgewählten Monat August 2023 optimiert.
Wie man den Befehl “Today” gewinnbringend einsetzen kann, habe ich im Beitrag Aktuelle Berichte mit Today ausführlich beschrieben.
Einstellungen der X-Achse
Schauen wir nun aber auf die möglichen Varianten der Einstellungen für die angezeigte X-Achse der Zeitreihenanalyse:
Mit dem ersten Radio-Button zeigen wir grundsätzlich alle Perioden der ausgewählten Ebene an. Ist der Zeitraum unserer Datenbank auf die Jahre 2019 bis 2024 angelegt und liegen bisher für ein Produkt Absätze von Januar 2019 bis September 2023 vor, so werden nun zunächst alle 72 Monate der sechs Jahre in der Achse angezeigt:
Die eingestellte Periode im Filter spielt hier erst einmal keine Rolle. Möchte man die abschließenden Monate ohne Daten nicht sehen, lässt sich dieses Verhalten in den Eigenschaften im Editiermenu per Checkbox aktivieren:
Die Monate ab Oktober 2023 werden nun in der Achse nicht mehr angezeigt.
Es gibt noch weitere Optionen im Editiermenu, wie mit fehlenden Werten – auch mittendrin – in der Anzeige umzugehen ist.
Zeitreihe nur für Elemente des aktuellen Filters
Mit der 2. Option “Zeitreihe nur für Elemente des aktuellen Filters berechnen” hat die eingestellte Periode einen Einfluss auf den dargestellten Zeitraum. Multiauswahl ist auch möglich und wählen wir die Jahre 2022 und 2023, dann sieht es folgendermaßen aus:
Dabei haben wir die Checkbox bei “Bei Aktualisierung Endperiode auf letzte Periode mit Daten setzen” deaktiviert.
Benannte Mengen in der Zeitreihenanalyse – Elementauswahl
Die beiden bisherigen Optionen reichen für den üblichen Betrieb normalerweise aus. Mit der ab Release 6.5.3 vorhandenen neuen Option “Zeitreihe für alle Elemente aus benannter Menge berechnen” haben wir nahezu völlige Freiheit, den darzustellenden Zeitraum zu definieren.
Benannte Mengen existieren für OLAP-Modelle und können im Modellieren-Modus angelegt und gepflegt werden. Die einfachsten benannten Mengen bestehen aus einer festen Auswahl von Elementen, zum Beispiel hier von April bis September 2023:
Wird dann in der Zeitreihenanalyse mit der dritten Option diese benannte Menge ausgewählt, so sieht man dann auch nur die Monate April bis September 2023 auf der Achse:
Natürlich ist diese Auswahl statisch und eignet sich zum Beispiel dazu, in Multiples einen idealtypischen Verlauf einem aktuellen Verlauf gegenüberzustellen.
Weiterhin ließen sich Filter und Rankings anwenden, die dafür sorgen, dass die Reihenfolge nicht zwingend chronologisch ist oder alle Perioden angezeigt werden. Aber bleiben wir bei Darstellungen, bei denen die Periodenelemente in der richtigen zeitlichen Reihenfolge und lückenlos dargestellt werden.
Benannte Mengen in der Zeitreihenanalyse – MDX-Ausdruck für gleitendes Fenster
Da die zweite Option bei der benannten Menge – Ebenenauswahl – zu ähnlichen Ergebnissen führt, wie die bereits bestehende Option “Zeitreihe für alle Elemente der ausgewählten Ebene berechnen”, konzentrieren wir uns gleich auf die letzte Möglichkeit, eine benannte Menge zu definieren, die den Unterschied zu den bisherigen Möglichkeiten ausmacht: Verwendung eines MDX-Ausdrucks! Hiermit sind Zeitreihenanalysediagramme möglich, die vorher zwar meistens nicht unmöglich, aber auf jeden Fall schwieriger zu erstellen waren.
Der erste Fall beschreibt ein gleitendes Fenster. Ausgehend von der eingestellten Periode, in unserem Fall ein Monat, sollen zum Beispiel immer die letzten 12 Monate sichtbar sein.
Der zugehörige Ausdruck sieht noch recht einfach aus:
Bei <view2> (2 ist die ID der Periodendimension) wird der im Filter stehende Monat eingesetzt. Dieses <view2> ist ein DeltaMaster-Konstrukt, das intern in die passenden MDX-Befehle umgewandelt wird. DeltaMaster ist so schlau, auch mit dem allgemeinen Ausdruck <view> zurechtzukommen und die passende ID selbst zu ermitteln.
Mit dieser benannten Menge stellt sich somit die Zeitreihenanalyse auf die letzten 12 Monate inklusive des aktuell eingestellten Monats ein:
Für die eingangs gezeigten Beispiele wurden noch Folgemonate für die Prognose der nächsten 3 Monate benötigt. Den nötigen Platz schafft man sich nun mit dem MDX-Ausdruck <view2>.lag(11):<view2>.lead(3). Die Regression und Prognose möchte ich hier nicht so ausführlich erläutern.
So viel sei angedeutet: Ich benutze die Rank-Funktion, um die Position eines Monats innerhalb dieser 15 Monate zu ermitteln. Die Originalzeitreihe wird ebenso wie die angepasste Regressionsgerade nur für die ersten 12 Monate angezeigt und außerhalb auf NULL gesetzt. Bei der Prognose ist es umgekehrt: Wir sehen sie nur für die letzten drei Monate 13 bis 15. Prognosen mit einer Linearen Regression können in MDX mit LinregPoint() erstellt werden.
Bemerkung
Mit dem Ansatz, eine gegebene Zeitreihenkennzahl (in einer Kopie!) per MDX-Befehl außerhalb eines gewünschten Zeitraums auf NULL zu setzen und dann die bereits genannte Eigenschaft zu nutzen, Start- und Endperiode auf jeweils die erste bzw. letzte Periode mit Daten zu setzen, konnte man bisher auch gleitende Fenster umsetzen.
Für diese Logik musste aber jede anzuzeigende Kennzahl in einer Kopie wie beschrieben behandelt werden. Der Ansatz mit benannten Mengen ist mächtiger, geht sparsamer mit Code und Kennzahlen um und ist einfacher umzusetzen.
Ein flexibleres gleitendes Fenster
Für den bisher erwähnten Ansatz musste im Berichtsfilter ein aktiver Monat ausgewählt worden sein. Wir möchten nun erreichen, dass auch ein konkretes Quartal oder Jahr im Berichtsfilter stehen darf und trotzdem die 12 Monate angezeigt werden, die mit dem letzten Monat des ausgewählten Elements enden. Wir setzen hierzu den Ausdruck tail(descendants(<view2>,[Zeit].[Zeit_].[Monat]),1).item(0) ein:
descendants(<view2>,[Zeit].[Zeit_].[Monat]) ermittelt die Menge der unter dem ausgewählten Periodenelement liegenden Monate auf der Monatsebene. Mit tail(Menge,1) wird eine aus dem letzten Element bestehende Teilmenge dieser Menge gebildet und mit .item(0) wird das in dieser Menge liegende einzige Element extrahiert. Für den Beginn des Zeitraums fügen wir noch ein “.lag(11)” an.
Wird nun ein Monat eingestellt, verhält sich das Fenster wie bisher. Für ein ausgewähltes Jahr werden die 12 Monate bis zum Dezember, also effektiv die Monate des Jahres angezeigt:
Verwenden wir das Quartal Q2/2022, sehen wir die Monate von Juli 2021 bis Juni 2022:
Schließlich sähen wir bei Verwendung des All-Elementes die Monate des Jahres 2024, da in der Datenbank die Zeitdimension von Januar 2019 bis Dezember 2024 reicht und somit Dezember 2024 der letzte Monat unterhalb des All-Elements ist.
Die Monate ab Jahresbeginn
Übrigens führen meistens mehrere Wege zum Ziel und unterschiedliche MDX-Ausdrücke können letztendlich den gleichen Zeitraum erzeugen. Statt mit tail hätten wir auch mit ClosingPeriod arbeiten können, wie wir es nun demonstrieren möchten.
Ziel ist es, mit einer beliebigen Periode im Filter – egal, ob Monat, Quartal oder Jahr – alle Monate des aktuellen Jahres von Januar bis zum letzten Monat der ausgewählten Periode anzuzeigen:
Der ClosingPeriod-Befehl bestimmt den letzten Monat in der ausgewählten Periode und der Beginn des Zeitraums wird mit OpeningPeriod auf den ersten Monat des zur ausgewählten Periode zugehörigen Jahres gelegt. Das heißt, es wird immer ein Januar für den Beginn ausgewählt.
Wird nun das Quartal Q2/2023 im Filter gesetzt, sind die Monate von Januar bis Juni 2023 sichtbar:
Mehrere Jahre übereinander
Häufig möchte man die aktuellen Verläufe von Zeitreihen mit vorangegangenen Jahren vergleichen. Geht das auch, wenn wir wie oben die letzten 12 Monate als gleitendes Fenster in der Zeitachse haben und in der gleichen Zeitreihengrafik die vorangegegangenen 24 Monate sehen wollen?
Die Antwort lautet: ja! Man verbindet einfach den Umsatz mit dem Zeitanalyseelement Vorjahreswert zu einem Filterwert, ebenso mit dem Vorvorjahreswert, und zieht beide Kennzahlen mit in die Zeitreihenanalysegrafik:
Da hier die angezeigten 12 Monate jahresübergreifend liegen können, habe ich den Umsatz der vorangegangenen Monate Umsatz (-12) bzw. Umsatz (-24) genannt. Außerdem habe ich die Monate senkrecht beschriftet, damit alle Monate ein Label erhalten.
Level in der benannten Menge definieren
Ich möchte noch zwei weitere große Anwendungsfelder andeuten:
Flexible Anwendungen lassen sich auch erzeugen, indem – abhängig von Bedingungen – die Zeitreihenachse vollkommen individuell angepasst wird. Wenn zum Beispiel geplante Absatzzahlen nur auf Quartalsebene vorliegen, Istzahlen aber für Monate, lässt sich ein Wechsel der Periodenebene definieren:
Hier nehmen wir an, dass immer ein Monat im Sichtfilter ausgewählt ist. Ist die Wertart “Ist” ausgewählt, sehen wir die letzten 12 Monate. Falls dies nicht der Fall ist (also Planwerte vorliegen), ermitteln wir zum Anfangs- und zum Endmonat das zugehörige Quartal und zeigen diese und die dazwischenliegenden Quartale an:
Somit kann auch das Level der dargestellten Perioden in einer einzigen Zeitreihenanalyse wechseln, hier zwischen Monaten und Quartalen.
Benannte Mengen in einer Zeitreihenanalyse ohne Zeit
Der Vollständigkeit halber sei eine weitere Anwendungsmöglichkeit angedeutet:
In DeltaMaster 6 lässt sich seit der Version 6.2.5 auch eine beliebige Dimension in die “Zeit”-Achse ziehen. Hier kann es sinnvoll sein, benannte Mengen anzulegen und zu verwenden, die auch mit Sortierung und Filtern arbeiten.
Wird zum Beispiel in unserer Demo-Anwendung Chair die Produktebene in die Zeitreihenanalyse gezogen, sieht das bei der gegebenen alphabetischen Sortierung zunächst folgendermaßen aus:
Wir legen nun eine benannte Menge auf der Ebene der Produkte an, wählen im Ranking die Top-10 nach Umsatz und aktivieren den Filter “Umsatz > 500.000”:
Wählen wir in den Einstellungen diese benannte Menge aus, dann sehen wir nun absteigend sortiert die Top-10-Produkte nach Umsatz, aber nur, wenn der Mindestumsatz von 500 Tsd. erzielt wird.
Falls Sie mit DeltaMaster arbeiten, wissen Sie natürlich, dass eine Grafische Tabelle mit dem gleichen Informationsgehalt leichter zu erstellen ist, mehr Möglichkeiten bietet und flexibler zu nutzen ist.
Sie können aber im Hinterkopf behalten, dass benannte Mengen für beliebige Dimensionen in der Zeitreihenanalyse eingesetzt werden können.
Fazit
Folgende Einschränkungen bei Verwendung einer benannten Menge zur Definition der Zeitreihenachse sollte man beachten: Die definierte benannte Menge sollte immer aus der ebenfalls in diesem Dialog ausgewählten Hierarchie stammen. Darüber hinaus müssen sie jeweils aus einer einzigen Ebene stammen.
Oben hatten wir jedoch gesehen, dass man zwischen zwei verschiedenen Ebenen per Schalter wechseln kann.
Ansonsten sind der Fantasie bei möglichen Anwendungen (fast) keine Grenzen gesetzt.