Verwenden von DAX-Zeitintelligenzfunktionen
DAX schließt mehrere Zeitintelligenzfunktionen ein, um die Änderung des Datumsfilterkontexts zu vereinfachen. Sie könnten viele dieser Intelligenzformeln mit einer CALCULATE
-Funktion schreiben, die Datumsfilter ändert, dies würde jedoch zusätzliche Arbeit bedeuten.
Hinweis
Viele DAX-Zeitintelligenzfunktionen betreffen Standard-Datumszeiträume, genauer gesagt Jahre, Quartale und Monate. Wenn Ihre Zeiträume unregelmäßig sind (z. B. Geschäftsmonate, die in der Mitte des Kalendermonats beginnen) oder wenn Sie mit Wochen oder spezifischen Zeiträumen arbeiten müssen (Stunden, Minuten usw.), sind die DAX-Zeitintelligenzfunktionen nicht hilfreich. Stattdessen müssen Sie die CALCULATE
-Funktion verwenden und manuell erstellte Datums- oder Zeitfilter übergeben.
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 im Modell enthalten sein muss. Eine Datumstabelle ist eine Tabelle, die die folgenden Anforderungen erfüllt:
- Sie muss eine Spalte vom Datentyp Date (oder Date/Time) aufweisen, die als Datumsspalte bezeichnet wird.
- Die Datumsspalte muss eindeutige Werte enthalten.
- Die Datumsspalte darf keine LEEREN Werte enthalten.
- In der Datumsspalte dürfen keine Datumsangaben fehlen.
- Die Datumsspalte muss vollständige Jahre umfassen. Bei einem Jahr muss es sich nicht unbedingt um ein Kalenderjahr (Januar–Dezember) handeln.
- Die Datumstabelle muss als solche ausgewiesen werden.
Weitere Informationen finden Sie unter Erstellen von Datumstabellen in Power BI Desktop.
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 zum aktuellen Datum (YTD) im aktuellen Filterkontext enthält. Diese Gruppe enthält auch die DAX-FunktionenDATESMTD
für den Monat bis zum aktuellen Datum (MTD) undDATESQTD
für das Quartal bis zum aktuellen Datum (QTD). Sie können diese Funktionen als Filter an die DAX-FunktionCALCULATE
übergeben. -
TOTALYTD
- wertet einen Ausdruck für YTD im aktuellen Filterkontext aus. Die entsprechenden QTD- und MTD-DAX-FunktionenTOTALQTD
undTOTALMTD
sind ebenfalls vorhanden. -
DATESBETWEEN
- gibt eine Tabelle mit einer Spalte von Datumsangaben zurück, die mit einem Startdatum beginnt und bis zu einem Enddatum fortgesetzt wird. -
DATESINPERIOD
- gibt eine Tabelle zurück, die eine Datumsspalte enthält, die mit einem bestimmten Startdatum beginnt und für die angegebene Anzahl von Intervallen fortgesetzt wird.
Hinweis
Die TOTALYTD
-Funktion ist zwar einfach zu verwenden, Sie können jedoch nur einen Filterausdruck übergeben. Wenn Sie mehrere Filterausdrücke anwenden müssen, verwenden Sie die CALCULATE
-Funktion, und übergeben Sie dabei die DATESYTD
-Funktion als einen der Filterausdrücke.
Im folgenden Beispiel erstellen Sie Ihre erste Zeitintelligenzberechnung, in der die TOTALYTD-Funktion verwendet wird. Die Syntax ist 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, mit der der YTD-Umsatz berechnet wird. Formatieren Sie das Measure als Währung mit zwei Dezimalstellen.
Revenue YTD =
TOTALYTD([Revenue], 'Date'[Date], "6-30")
Der Wert "6-30"
für das Jahresenddatum steht für den 30. Juni.
Fügen Sie auf Seite 1 des Berichts dem Matrixvisual das Measure Revenue YTD hinzu. Beachten Sie, dass es eine Zusammenfassung der Umsatzbeträge ab dem Anfang des Jahres bis zum gefilterten Monat erzeugt.
Vergleiche über den Zeitverlauf
Eine weitere Gruppe von DAX-Zeitintelligenzfunktionen bezieht sich auf das Verschieben von Zeiträumen:
-
DATEADD
- gibt eine Tabelle zurück, die eine Spalte mit Datumsangaben enthält, die im Verhältnis zu den Datumsangaben im aktuellen Kontext um die angegebene Anzahl von Intervallen zeitlich vorverlegt oder zurückversetzt sind. -
PARALLELPERIOD
- Gibt eine Tabelle mit einer Spalte mit Datumsangaben zurück, die eine Punktparallele zu den Datumsangaben in der angegebenen Datumsspalte und im aktuellen Filterkontext darstellt. Die Datumsangaben werden um Intervalle in die Zukunft oder in die Vergangenheit verschoben. -
SAMEPERIODLASTYEAR
- Gibt eine Tabelle mit einer Spalte mit Datumsangaben zurück, die den Datumsangaben in der angegebenen Datumsspalte im aktuellen Filterkontext um ein Jahr zurückversetzt entsprechen. - 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
sowiePREVIOUSDAY
,PREVIOUSMONTH
,PREVIOUSQUARTER
undPREVIOUSYEAR
.
Nun fügen Sie mit der SAMEPERIODLASTYEAR
-Funktion der Tabelle Sales eine Measuredefinition hinzu, die den Umsatz für das vorherige Jahr 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.
Als Nächstes ändern Sie das Measure, indem Sie es in Revenue YoY % umbenennen und dann die RETURN
-Klausel aktualisieren, um das Änderungsverhältnis zu berechnen. Achten Sie darauf, das Format in einen Prozentsatz 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 gegenüber dem monatlichen Umsatz des Vorjahrs 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.
Hinweis
Das Measure Revenue YoY % veranschaulicht eine gute Verwendung von DAX-Variablen. Das Measure verbessert die Lesbarkeit der Formel und ermöglicht Ihnen, einen Teil der Measurelogik Komponententests zu unterziehen (indem Sie den Variablenwert RevenuePriorYear zurückgeben). Darüber hinaus ist das Measure eine optimale Formel, da es nicht zweimal den Umsatzwert des Vorjahrs abrufen muss. Nach dem Speichern in einer Variable verwendet die RETURN
-Klausel den Variablenwert zweimal.