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

Benannte Mengen in der Zeitreihenanalyse

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:

>Diese Zeitachse ist mit einer benannten Menge dynamisch erzeugt

Diese Zeitachse ist mit einer benannten Menge dynamisch erzeugt

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:

Die Zeitachse, wie sie im Oktober 2023 aussieht

Die Zeitachse, wie sie im Oktober 2023 aussieht

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.

Eine Defaultauswahl, die sich auf den letzten vollständigen Monat einstellt

Eine Defaultauswahl, die sich auf den letzten vollständigen Monat einstellt

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:

Der Bericht stellt sich am 26.9.2023 auf den August 08/2023 ein

Der Bericht stellt sich am 26.9.2023 auf den August 08/2023 ein

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:

Mögliche Einstellungen für den Zeitraum bei der Zeitreihenanalyse

Mögliche Einstellungen für den Zeitraum bei 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:

Alle Monate in der X-Achse

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 abschließenden Monate ohne Daten in der X-Achse ignorieren

Die abschließenden Monate ohne Daten in der X-Achse ignorieren

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:

Nur Monate aus 2022 und 2023

Nur Monate aus 2022 und 2023

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:

Benannte Menge April - September

Benannte Menge April – September

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:

April - September in der Zeitreihenanalyse

April – September in der Zeitreihenanalyse

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:

Die letzten 12 Monate per MDX

Die letzten 12 Monate per MDX

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:

Zeitreihe der letzten 12 Monate

Zeitreihe der letzten 12 Monate

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:

Definition der benannten Menge

Definition der benannten Menge

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:

Die letzten 12 Monate bis Dezember

Die letzten 12 Monate bis Dezember

Verwenden wir das Quartal Q2/2022, sehen wir die Monate von Juli 2021 bis Juni 2022:

Die letzten 12 Monate bis Juni

Die letzten 12 Monate bis Juni

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:

Die Monate ab Januar bis zum letzten Monat der ausgewählten Periode

Die Monate ab Januar bis zum letzten Monat der ausgewählten Periode

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:

Die Monate ab Januar bis zum letzten Monat der ausgewählten Periode

Die Monate ab Januar bis zum Juni 2023 als letzten Monat des 2. Quartals

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:

Die letzten 12 Monate mit ihren Vergleichswerten der vorangegangenen 24 Monate

Die letzten 12 Monate mit ihren Vergleichswerten der vorangegangenen 24 Monate

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:

Monate für Ist, Quartale für Plan

Monate für Ist, Quartale für Plan

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:

Zeitreihe auf Monate für Ist, auf Quartale für Plan

Zeitreihe auf Monate für Ist, auf Quartale für Plan

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:

Alle Produkte mit ihren Umsätzen

Alle Produkte mit ihren Umsätzen

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”:

Top-10-Produkte mit Mindestumsatz 500.000

Top-10-Produkte mit Mindestumsatz 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.