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

Relative Periodenbezüge: Normierung von Zeitreihen

Wir alle kennen die Hilfsdimension Periodenansicht und wissen um ihren Nutzen für Analysen. Mittels der Periodenansicht kann zum Beispiel leicht ein generischer MDX-Ausdruck erstellt werden, der für jede beliebige Kennzahl den Vorjahreswert anzeigt. Auch absolute und relative Abweichungen zum Vorjahr sind auf diese Weise schnell ermittelt. In DeltaMaster unterstützt uns dabei der „Editor für Zeitanalyseelemente“ und deswegen müssen wir die MDX-Ausdrücke nicht einmal selbst schreiben.

Aber können wir damit auch unterschiedliche Zeiträume vergleichen? Nicht ohne Weiteres, denn bei absoluten und relativen Abweichungen werden immer zwei Zeitpunkte, bzw. in MDX zwei Elemente, miteinander verglichen, z.B. Umsatz 2013 und Umsatz 2012 = Δ Umsatz VJ. Ein Vergleich von zwei Zeitreihen, die zu unterschiedlichen Zeitpunkten beginnen, ist demnach nicht einfach so möglich.

Ein relativer Periodenbezug ist der Vergleich von Zeitreihen, die zu unterschiedlichen Zeitpunkten bzw. Perioden starten. Aber wann kann man das gebrauchen? Und wie funktioniert das? Genau damit beschäftigt sich dieser Blogbeitrag.

Zunächst ein einfaches Beispielszenario:

Ein Händler plant, neue Produkte in sein Sortiment aufzunehmen. Diese Produkte sollen über verschiedene Filialen an seine Kunden weiterverkauft werden. Da die Fertigungskapazitäten des Lieferanten begrenzt sind, Lagerplatz teuer ist und die Regale nicht beliebig skaliert werden können, wird der Händler sehr genau planen, wie viele Produkte zu welchem Preis wann verkauft werden sollen.

Aus diesem einfachen Beispiel ergeben sich schon eine ganze Reihe an Dimensionen und Kennzahlen:

  • Periode
  • Produkt
  • Kunde*
  • Filiale*
  • Wertart
  • Periodenansicht
  • Kumulation
  • Absatz / Umsatz (Preis)

*) Zur Reduzierung der Komplexität werden die Dimensionen Kunde und Filiale in diesem Beispiel nicht näher betrachtet.

Wie wir alle wissen, ist das Planen von Produktverkäufen, insbesondere ohne geeignete Erfahrungswerte, ein Blick in die Glaskugel. Deswegen wird der Händler seine Planung mit Plan-Ist-Vergleichen überprüfen wollen, damit er diese immer weiter verbessern kann. Er könnte beispielsweise den Soll-Verkaufsabsatz planen, der nachfolgend betrachtet wird.

Nehmen wir einmal an, dass nicht alle Produkte zum gleichen Zeitpunkt eingeführt werden. Womöglich unterscheidet sich der Einführungszeitpunkt auch noch nach Filialen, z.B. durch ein unvorhergesehenes Ereignis. Wie kann in solch einem Fall der Soll-Verkaufsabsatz noch mit den Ist-Verkäufen verglichen werden? Und welches Produkt hat die besten Ziel-Verkaufsquote erreicht oder sogar übertroffen?

Betrachtet man nun zwei Zeitreihen mit unterschiedlichen Startzeitpunkten, kommt man schnell auf die Idee, dass zum Vergleich der Zeitreihen der Startzeitpunkt entscheidend ist. Ist dieser bei beiden Zeitreihen gleich, dann können die Zeitreihen wieder mit den gewohnten DeltaMaster-Bordmitteln verglichen werden. Also werden wir die Zeitreihen auf einen fiktiven Zeitpunkt auf der relativen Periode normieren.

Eine einfache Möglichkeit wäre es, die Periode in den Belegdaten auf den gleichen Startzeitpunkt zu ändern, aber damit würden andere Auswertungen verfälscht und unbrauchbar werden. Weitaus eleganter ist es, eine weitere Hilfsdimension anzulegen, zusammen mit ein wenig SQL und MDX.

Und wie funktioniert das genau?

Als erstes wird der Händler eine Planung über die Verkäufe (Absatz) seiner Produkte aufstellen. Wir nehmen dabei an, dass der Händler nicht genau weiß, wann er die Produkte von seinen Lieferanten erhält und dass diese nicht saisonabhängig sind. Deswegen plant er die Verkäufe nicht nach realen Monaten, sprich auf der Dimension Periode, sondern auf einer relativen Periode, die wir hier Periodenblock (PB) nennen.

2013-06-14_crew_Plan-Verkäufe

Weiter nehmen wir an, dass die Produktverkäufe zu unterschiedlichen Zeitpunkten starten. Produkt 1 wird im Januar verkauft, die Produkte 2 und 3 erst ab März und Produkt 4 erst im Mai, z.B. aufgrund von Lieferengpässen.

2013-06-14_crew_Ist-Verkäufe

Damit Verkaufsquoten ermittelt werden können, müssen Ist-Verkäufe und Plan-Verkäufe normiert werden. Durch die Normierung der Ist-Verkäufe auf die relative Periode verschiebt sich der erste Verkaufszeitpunkt immer auf den ersten Periodenblock.

2013-06-14_crew_Ist-Verkäufe normiert

Anschließend kann durch eine einfache Formel (Ist / Plan) die Zielerreichungsquote ermittelt werden.

2013-06-14_crew_Ziel-Quote

Auf diese Weise können die Zeitreihen, z.B. die Ziel-Erreichungsquoten der einzelnen Produkte, sehr einfach miteinander verglichen werden. Die Frage, welches Produkt bei der Zielerreichung am besten abgeschnitten hat, ist nun ganz einfach zu beantworten. Möchte man auf der relativen Periode Abweichungen oder Vorperiodenwerte ermitteln, so müssen in den Dimensionen Periodenansicht und Kumulation entsprechende Elemente mittels MDX angelegt werden.

Als schönen Nebeneffekt erreichen wir, dass die Plan-Verkäufe, die auf der relativen Periode erstellt wurden, ebenfalls auf den ersten Verkaufszeitpunkt des jeweiligen Produktes gemappt werden. Dadurch können die Quoten nicht nur auf der relativen Periode verglichen werden, sondern auch auf der Dimension Periode. Und damit funktionieren an dieser Stelle im DeltaMaster die standardisierten Periodenansichts- und Kumulationselemente.

Und wie funktioniert die technische Umsetzung?

Die technische Umsetzung ist denkbar einfach. In nur drei Schritten wird das Modell um eine relative Periode erweitert sein und in einem vierten Schritt werden noch einige berechnete Elemente zur Kumulation und Abweichungsanalyse für die relative Periode angelegt.

  1. Zunächst benötigen wir die relative Periode „Periodenblock“, für die wir in der relationalen Datenbank eine Tabelle erstellen und eine View anlegen. Diese Dimension kann aus beliebig vielen Ebenen bestehen, ein All-Member sollte jedoch vergeben werden, da andernfalls im Dimensionsbrowser immer ein Periodenblock vorausgewählt wäre.
PeriodenblockID PeriodenblockText PeriodenblockGruppenID PeriodenblockGruppenText
1 PB 1 1 PBG 1
2 PB 2 1 PBG 1
3 PB 3 1 PBG 1
4 PB 4 2 PBG 2

Beispiel: Relative Periode „Periodenblock“ mit zwei Ebenen

2. Anschließend erstellen wir eine Fakten-View für eine neue Measuregroup, die Ist- und Plandaten verbindet und gleichzeitig die Zeitreihen normiert. Dazu verbinden wir die beiden vorhandenen Fakten-Views für Ist- und Plandaten über die IDs der kennzeichnenden Dimensionen.
Die Normierung auf die relative Periode wird dem Join als weitere Bedingung hinzugefügt. Dafür wird in diesem Beispiel eine kleine Rechnung benötigt: Wir ermitteln den ersten Verkaufszeitpunkt eines Produktes (MIN) und ziehen diesen Zeitpunkt von der Periode in der jeweiligen Zeile ab. Wenn Produkt 1 zum Beispiel zuerst im Januar 2013 verkauft wurde, dann wird für März 2013 bei Produkt 1 folgendes gerechnet: 201303 – 201301 = 2. Auf diese Weise erhalten wir die ID des gewünschten Periodenblocks – zumindest fast, denn um PB 3 (ID 3) zu erhalten, müssen wir noch 1 dazu addieren, da wir auch bei 1 anfangen zu zählen.

CREATE VIEW V_Import_Fact_IstPlanVerkaufsdaten AS 
-- View for Fact MeasrGrp Ist- und Plan-Verkaufsdaten:
-- Abverkaufsdaten werden mit Planverkaufsdaten verbunden
-- Join auf die relative Periode zur Ermittlung der Quoten und 
-- Normierung der Zeitreihen 
SELECT 
         -- Dimensions 
           a.PeriodeID
         ,a.ProduktID
         ,p.PeriodenBlockID 

         -- Measures 
         ,a.Absatz IstAbsatz 
         ,a.Umsatz IstUmsatz 
         ,p.Absatz PlanAbsatz 
         ,p.Umsatz PlanUmsatz 

         -- Select * 
FROM 
        V_Import_Fact_Abverkaufsdaten a 
        JOIN V_Import_Fact_Planverkaufsdaten p 
                 ON p.ProduktID = a.ProduktID 
                 -- Relative Zeitperiode = Aktuelle Periode - 1.Periode + 1 
                 AND p.PeriodenBlockID = ( 
                          SELECT a.PeriodeID - MIN(aa.PeriodeID) + 1 
                          FROM V_Import_Fact_Abverkaufsdaten aa 
                          WHERE aa.ProduktID = a.ProduktID 
                  )

3. In DeltaMaster Modeler können wir wie üblich die Modellanpassungen vornehmen, d.h. die relative Periode wird als Dimension mit der/den entsprechenden Ebene/n angelegt und die neue Measuregroup mit den jeweiligen Kennzahlen.

4. Schließlich legen wir in den bekannten Hilfsdimensionen Periodenansicht und Kumulation Elemente über die relative Periode an. Nachfolgend jeweils ein Beispiel:
a) Abweichung zur relativen Vorperiode:

( 
         [Periodenblock].[Periodenblock].CurrentMember, 
         [Periodenansicht].[Periodenansicht].[Periodenansicht].&[1] 
) 
- 
( 
          [Periodenblock].[Periodenblock].CurrentMember.PrevMember,
          [Periodenansicht].[Periodenansicht].[Periodenansicht].&[1] 
)

b. Kumulation über Periodenblöcke:

AGGREGATE( 
          [Periodenblock].[Periodenblock].CurrentMember.Level.Members(0) 
          : 
          [Periodenblock].[Periodenblock].CurrentMember 
, 
           [Kumulation].[Kumulation].[Kumulation].&[1] 
)