DATEADD vs. PARALLELPERIOD

    Im letzten Blog-Beitrag haben wir die DATEADD() vorgestellt für flexible Periodenvergleiche. DAX bietet eine ähnlich klingende Funktion mit dem Namen PARALLELPERIOD – die aber tatsächlich etwas anderes tut!

    Ausgangsdaten

    Für das Beispiel benötigen wir Ausgangsdaten. Es genügt eine einfache Faktentabelle und eine Kalendertabelle. Als Faktentabelle verwenden wir die aus dem letzten Blogbeitrag – einfach ein Datum und ein Wert:

    Faktendaten

    Die Kalendertabelle lassen wir uns generieren: In Excel am schnellsten mit der integrierten Funktion in Power BI mit der Funktion CALENDAR():

    Kalender = CALENDAR(DATE(2010;1;1); DATE(2020;12;31))

    Die Kalendertabelle erweitern wir um das Jahr, das Quartal und den gekürzten Monatsnamen (in Excel geben Sie den Spaltennamen nicht in der Formel, sondern im Spaltenkopf an):

    Jahr = YEAR(Kalender[Date])

    Month = FORMAT(Kalender[Date];”MMM”)

    Quarter = FORMAT(Kalender[Date];”q”)

    Beide Tabellen verknüpfen wir über die Datumsangabe.

    Den Vorjahreswert mit DATEADD ermitteln

    Dann legen eine Measure für den Vorjahresvergleich an – mit DATEADD:

    Wert VJ = CALCULATE(SUM(tblValues[Wert]); DATEADD(Kalender[Date]; -1;YEAR))

    Damit können wir folgende Pivottabelle darstellen:

    Pivottabelle mit Vorjahreswerten

    Und PARALLELPERIOD?

    Wir legen ein weiteres Measure an. Dieses Mal mit der Funktion PARALLELPERIOD – die Signatur der Funktion ist identisch:

    Wert PP = CALCULATE(sum(tblValues[Wert]);PARALLELPERIOD(Kalender[Date];-1;YEAR))

    Wenn wir die zweite Measure einfügen sieht die Pivot-Tabelle auch identisch aus:

    Vorjahreswerte mit PARALLELPERIOD

    Also macht PARALLELPERIOD doch das gleiche?

    Same same but different

    Fügen Sie in die Pivot-Tabelle noch den Monat ein – dann sehen wir einen Unterschied:

    Vorjahreswerte auf Monatsbasis

    DATEADD() betrachtet den aktuellen Zeitraum im Benutzerkontext. Daher wird das Jahr in der Zeile, also der Zeitraum von 1.1. bis zum 31.12., um ein Jahr verschoben. PARALLELPERIOD() hingegen nimmt die gesamte Vorperiode, die in der Funktion übergeben wurde. Und zwar unabhängig, welcher Benutzerfilter gesetzt wurde. Da auch hier Jahr angegeben wurde, sind die Ergebnisse beider Funktionen in diesem Fall identisch.

    Wählen wir jedoch zusätzlich den Monat aus, verschiebt DATEADD() auch nur den ersten bis zum letzten des Monats um ein Jahr nach vorne. PARALLELPERIOD() hingegen nimmt weiterhin das ganze Intervall, das in der Formel hinterlegt wurde. In diesem Beispiel also weiterhin das gesamte Vorjahr. Damit wird immer das gesamte Vorjahr mit dem aktuellen Monat verglichen.

    Fügen wir noch das Quartal ein. Wie Sie in der Abbildung sehen können, verschiebt DATEADD() immer um drei Monate zur Ermittlung des Wertes, PARALLEPERIOD() nimmt das gesamte vorherige Quartal:

    Werte des vorherigen Quartals - DATEADD vs. PARALLELPERIOD

    Einfaches Anwendungsbeispiel

    Vergleich des Umsatz des aktuellen Quartals mit dem Vorquartal – wobei der Wert des Vorquartals als Ziel verwendet wird:

    Anwendungsbeispiel mit Gauge

    Kategorien: Artikel, Datum-Dimension, Power BI, Power Pivot
    Holger Gubbels

    Holger Gubbels ist Spezialist für alles, was mit Business Intelligence zu tun hat. Der Diplom-Informatiker strukturiert und löst als Data Scientist und Berater der mogular GmbH tagtäglich komplexe Problemstellungen rund um die Datenanalyse. Als Dozent der Hochschule für Technik Stuttgart ist er ein ausgewiesener Experte seines Fachs und gewohnt, Inhalte einfach zu erläutern. Genau das macht er auch hier in seinen Beiträgen für das PowerPivotInsights Blog. Zusätzlich ist er Autor für die Computerwoche und den Springer-Verlag. Sie erreichen ihn unter hg@mogular.com

    Antwort schreiben

    Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.