DAX-Zeitintelligenzfunktionen verwenden

Abgeschlossen

DAX schließt mehrere Zeitintelligenzfunktionen ein, um die Änderung des Datumsfilterkontexts zu vereinfachen. Sie können viele dieser Intelligenzformeln mit einer CALCULATE-Funktion schreiben, die Datumsfilter ändert. Dadurch wird jedoch mehr Arbeit erzeugt.

Hinweis

Viele DAX-Zeitintelligenzfunktionen arbeiten mit Standarddatumsperioden wie Jahren, Quartalen und Monaten. Wenn Sie unregelmäßige Zeiträume haben, wie z. B. Geschäftsmonate, die nicht mit dem Kalender übereinstimmen, oder wenn Sie mit Wochen oder kürzeren Zeiträumen arbeiten müssen, helfen die integrierten DAX-Funktionen nicht. Verwenden Sie in diesen Fällen die CALCULATE-Funktion mit benutzerdefinierten Datums‑ oder Uhrzeitfiltern.

Anforderung an eine Datumstabelle

Um mit DAX-Zeitintelligenzfunktionen arbeiten zu können, müssen Sie die Voraussetzung an das Modell erfüllen, dass mindestens eine Datumstabelle in Ihrem Modell enthalten sein muss. Eine Datumstabelle ist eine Tabelle, die als Datumstabelle gekennzeichnet ist. Diese Tabelle muss eine Spalte vom Datentyp „Datum“ (oder Datum/Uhrzeit) enthalten, die als Datumsspalte bezeichnet wird. Die Datumsspalte muss:

  • Eindeutige Werte enthalten.
  • Volle Jahre umfassen.
  • Keine BLANKs enthalten.
  • Keine fehlenden Daten aufweisen.

Weitere Informationen finden Sie unter Datentabellen in Power BI Desktop erstellen.

Zusammenfassungen im Zeitverlauf

Eine Gruppe von DAX-Zeitintelligenzfunktionen ist auf Zusammenfassungen über einen Zeitraum ausgelegt:

  • DATESYTD – Gibt eine einspaltige Tabelle zurück, die Datumsangaben für das Jahr bis heute (seit Jahresbeginn) im aktuellen Filterkontext umfasst. Zu dieser Gruppe gehören auch die Funktionen DATESMTD und DATESQTD für den Monat bis zum aktuellen Tag (month-to-date, MTD) und das Quartal bis zum aktuellen Tag (quarter-to-date, QTD). Sie können diese Funktionen als Filter an die Funktion CALCULATE übergeben.
  • TOTALYTD – Wertet einen Ausdruck für seit Jahresbeginn im aktuellen Filterkontext aus. Die entsprechenden QTD‑ und MTD-DAX-Funktionen von TOTALQTD und TOTALMTD sind ebenfalls enthalten.
  • DATESBETWEEN – Gibt eine Tabelle zurück, die eine Spalte von Datumsangaben umfasst, die mit einem bestimmten Startdatum beginnt und bis zu einem bestimmten Enddatum fortgesetzt wird.
  • DATESINPERIOD – Gibt eine Tabelle zurück, die eine Spalte mit Datumsangaben umfasst, die mit einem bestimmten Startdatum beginnt und sich über die angegebene Anzahl von Intervallen fortsetzt.

Hinweis

Obwohl die Funktion TOTALYTD einfach verwendet werden kann, können Sie nur einen Filterausdruck übergeben. Wenn Sie mehrere Filterausdrücke anwenden müssen, nutzen Sie die Funktion CALCULATE und übergeben Sie die Funktion DATESYTD dann als einen der Filterausdrücke.

Im folgenden Beispiel erstellen Sie Ihre erste Zeitintelligenzberechnung, die diese Funktion TOTALYTD verwendet. Die Syntax lautet wie folgt:

TOTALYTD(<expression>, <dates>, [, <filter>][, <year_end_date>])

Die Funktion erfordert einen Ausdruck und, wie bei allen Zeitintelligenzfunktionen, einen Verweis auf die Datumsspalte einer markierten Datumstabelle. Optional kann ein einzelner Filterausdruck oder das Enddatum des Jahres übergeben werden (nur erforderlich, wenn das Jahr nicht am 31. Dezember endet).

Laden Sie die Datei Adventure Works DW 2020 M07.pbix herunter, und öffnen Sie sie. Fügen Sie dann der Tabelle Sales die folgende Measuredefinition hinzu, die die YTD-Einnahmen berechnet. Formatieren Sie das Measure als Währung mit zwei Dezimalstellen.

Revenue YTD =
TOTALYTD(
    [Revenue],
    'Date'[Date],
    "6-30"
)

Der Jahresenddatumswert von "6-30" stellt den 30. Juni dar.

Fügen Sie auf Seite 1 des Berichts das Measure Revenue YTD dem Matrix-Visual hinzu. Beachten Sie, dass es eine Zusammenfassung der Umsatzbeträge ab dem Anfang des Jahres bis zum gefilterten Monat erzeugt.

Der Screenshot zeigt eine Matrixdarstellung mit Gruppierungen nach Year und Month in den Zeilen für die Zusammenfassungen für „Revenue“ und „Revenue YTD“ an. Die YTD-Werte sind hervorgehoben.

Vergleiche über den Zeitverlauf

Eine andere Gruppe von DAX-Zeitintelligenzfunktionen ist auf Zusammenfassungen ist mit Zeitverschiebungen angelegt:

  • DATEADD – Gibt eine Tabelle zurück, die eine Spalte mit Datumsangaben umfasst, die entweder um die angegebene Anzahl von Intervallen vor oder nach den Datumsangaben im aktuellen Filterkontext verschoben sind.
  • PARALLELPERIOD – Gibt eine Tabelle zurück, die eine Spalte mit Datumsangaben umfasst, die einen Zeitraum darstellen, der parallel zu den Datumsangaben in der angegebenen Datumsspalte im aktuellen Filterkontext verläuft, wobei die Datumsangaben um eine bestimmte Anzahl von Intervallen vorwärts oder rückwärts verschoben sind.
  • SAMEPERIODLASTYEAR – Gibt eine Tabelle zurück, die eine Spalte mit Datumsangaben umfasst, die im aktuellen Filterkontext um ein Jahr zurückverschoben sind.
  • Viele DAX-Hilfsfunktionen für die Navigation rückwärts oder vorwärts durch bestimmte Zeiträume, die jeweils eine Tabelle mit Datumsangaben zurückgeben. Zu diesen Hilfsfunktionen gehören NEXTDAY, NEXTMONTH, NEXTQUARTER, NEXTYEAR, PREVIOUSDAY, PREVIOUSMONTH, PREVIOUSQUARTER und PREVIOUSYEAR.

Fügen Sie jetzt der Tabelle Sales ein Measure hinzu, das mit der Funktion SAMEPERIODLASTYEAR den Umsatz für das Vorjahr berechnet. Formatieren Sie das Measure als Währung mit zwei Dezimalstellen.

Revenue PY =
VAR RevenuePriorYear = CALCULATE(
    [Revenue],
    SAMEPERIODLASTYEAR('Date'[Date])
)
RETURN
    RevenuePriorYear

Fügen Sie dem Matrixvisual das Measure Revenue PY hinzu. Beachten Sie, dass Ergebnisse generiert werden, die den Umsatzbeträgen des Vorjahrs ähneln.

Der Screenshot zeigt ein Matrixvisual mit Gruppierung nach Year und Month in den Zeilen und den Zusammenfassungen für „Revenue“, „Revenue YTD“ und „Revenue PY“ Die „Revenue PY“-Monatswerte für das GJ2019 entsprechen den Umsatzmonatswerten für das GJ2018.

Ändern Sie als Nächstes das Measure, indem Sie den Namen in Revenue YoY % ändern und dann die Klausel RETURN aktualisieren, um das Änderungsverhältnis zu berechnen. Achten Sie darauf, das Format in Prozent mit zwei Dezimalstellen zu ändern.

Revenue YoY % =
VAR RevenuePriorYear = CALCULATE(
    [Revenue],
    SAMEPERIODLASTYEAR('Date'[Date])
)
RETURN
    DIVIDE(
        [Revenue] - RevenuePriorYear,
        RevenuePriorYear
    )

Beachten Sie, dass das Measure Revenue YoY % ein Verhältnis des Änderungsfaktors zum monatlichen Umsatz des Vorjahres erzeugt. Beispielsweise stellt Juli 2018 eine Erhöhung um 106,53 % im Vergleich zum monatlichen Umsatz des Vorjahrs dar, und November 2018 entspricht einer Senkung von 24,22 % gegenüber dem monatlichen Umsatz des Vorjahrs.

Der Screenshot zeigt eine Matrixdarstellung mit Gruppierungen nach Year und Month in den Zeilen und Zusammenfassungen für „Revenue“, „Revenue YTD“ und „Revenue YoY %“. Die Werte für den Umsatz im Vergleich zum Vorjahr in Prozent für das Geschäftsjahr 2019 sind als Prozentsätze formatiert.

Hinweis

Das Measure Revenue YoY % zeigt eine gute Verwendung von DAX-Variablen. Das Measure verbessert die Lesbarkeit der Formel und ermöglicht Ihnen die Einheitentests für einen Teil der Measurelogik (durch Rückgabe des RevenuePriorYear-Variablenwerts). Darüber hinaus ist das Measure eine optimale Formel, da es nicht zweimal den Umsatzwert des Vorjahrs abrufen muss. Nachdem die Klausel RETURN einmal in einer Variablen gespeichert wurde, verwendet sie den Variablenwert zweimal.