Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:
Berechnete Spalte
Berechnete Tabelle
Measure
visuelle Berechnung
Anmerkung
Diese Funktion wird für die Verwendung in visuellen Berechnungen abgeraten, da sie wahrscheinlich sinnlose Ergebnisse zurückgibt.
Gibt für die Datumsspalteneingabe eine Tabelle zurück, die eine Spalte mit Datumsangaben enthält, die mit einem angegebenen Startdatum beginnt und für die angegebene Zahl und den angegebenen Typ von Datumsintervallen fortgesetzt wird.
Gibt für die Kalendereingabe eine Tabelle zurück, die mit einem angegebenen Startdatum beginnt und für die angegebene Anzahl und den Typ der Datumsintervalle fortgesetzt wird. Die Tabelle enthält alle primären markierten Spalten und alle zeitbezogenen Spalten.
Diese Funktion eignet sich zum Übergeben als Filter an die CALCULATE-Funktion. Verwenden Sie ihn, um einen Ausdruck nach Standarddatumsintervallen wie Tagen, Monaten, Quartalen oder Jahren zu filtern.
Syntax
DATESINPERIOD(<dates> or <calendar>, <start_date>, <number_of_intervals>, <interval>[, <endbehavior>])
Parameter
| Ausdruck | Definition |
|---|---|
dates or calendar |
Eine Spalte, die Datumsangaben oder einen Kalenderverweis enthält |
start_date |
Ein Datumsausdruck. Wenn die Kalendersyntax verwendet wird, verwenden Sie denselben Datentyp wie die primäre Spalte, die in der Kategorie "Tag" markiert ist. |
number_of_intervals |
Eine ganze Zahl, die die Anzahl der Intervalle angibt, die zu den Datumsangaben addiert oder subtrahiert werden sollen. |
interval |
Das Intervall, nach dem die Datumsangaben verschoben werden sollen. Der Wert für das Intervall kann eine der folgenden Sein: DAY, WEEK, , MONTH, , QUARTERund YEAR. Die Woche konnte nur mit dem Kalender verwendet werden. |
endbehavior |
Gilt nur, wenn ein Kalenderverweis angegeben wird. Wahlfrei. Steuert, wie das Enddatum ausgerichtet wird, wenn das Zielintervall länger als die Quellspanne ist. Gültige Werte sind: GENAU (Standard) und ENDALIGNED. |
Rückgabewert
Bei der Eingabe von Datumsspalten enthält eine Tabelle, die eine einzelne Spalte mit Datumswerten enthält.
Bei Kalendereingaben enthält eine Tabelle, die alle primären markierten Spalten und alle zeitbezogenen Spalten enthält.
Bemerkungen
Im am häufigsten verwendeten Anwendungsfall ist
datesein Verweis auf die Datumsspalte einer markierten Datumstabelle.Wenn die für
number_of_intervalsangegebene Zahl positiv ist, werden die Datumsangaben in der Zeit nach vorne verschoben; Wenn die Zahl negativ ist, werden Datumsangaben in der Zeit rückwärts verschoben.Der
interval-Parameter ist eine Enumeration. Gültige Werte sindDAY,WEEK,MONTH,QUARTERundYEAR. Da es sich um eine Enumeration handelt, werden Werte nicht als Zeichenfolgen übergeben. Schließen Sie sie also nicht in Anführungszeichen ein.Wenn
endbehaviorangegeben wird (nur Kalenderzeitintelligenz), DATESINPERIOD wird der Wert an DATEADDden Parameter weitergeleitetExtension. Ausführliche Beispiele finden Sie unter "Understanding endbehavior ".Bei der Datumsspalteneingabe kann die zurückgegebene Tabelle nur Datumsangaben enthalten, die in der
datesSpalte gespeichert sind. Wenn beispielsweise die spalte "dates" ab dem 1. Juli 2017 beginnt und derstart_dateWert 1. Juli 2016 ist, beginnt die zurückgegebene Tabelle vom 1. Juli 2017.Wenn für die Kalendereingabe das Eingabedatum in der Spalte "Tag" nicht gefunden wird, wird das Ergebnis nicht definiert. Bitte geben Sie gültige Datumseingaben an.
Verwenden Sie für die Kalendereingabe denselben Datentyp und dasselbe Format wie die markierte Tagesspalte für das Startdatum. Wenn die Spalte beispielsweise das Format YYYY-Sn-Qn-Mnn-Wnn-Dnn verwendet (z. B. "2014-S2-Q4-M11-W45-D03"), muss das Startdatum demselben Format folgen (z. B. "2015-S2-Q4-M11-W45-D03"). Andernfalls ist das Verhalten nicht definiert.
Diese Funktion wird für die Verwendung im DirectQuery-Modus nicht unterstützt, wenn sie in berechneten Spalten oder Sicherheitsregeln auf Zeilenebene (RLS) verwendet wird.
Beispiel
In der folgenden Definition von "Sales table measure" wird die DATESINPERIOD-Funktion verwendet, um den Umsatz für das Vorjahr (PY) zu berechnen.
Beachten Sie, dass die Formel die funktion MAX verwendet. Diese Funktion gibt das neueste Datum zurück, das sich im Filterkontext befindet. Die funktion DATESINPERIOD gibt also eine Tabelle mit Datumsangaben zurück, die vom letzten Datum für das letzte Jahr beginnen.
Beispiele in diesem Artikel können mit dem Beispielmodell Adventure Works DW 2020 Power BI Desktop verwendet werden. Informationen zum Abrufen des Modells finden Sie unter DAX Beispielmodell.
Revenue PY =
CALCULATE (
SUM ( Sales[Sales Amount] ),
DATESINPERIOD ( 'Date'[Date], MAX ( 'Date'[Date] ), -1, YEAR )
)
Beachten Sie, dass der Bericht nach dem Monat Juni 2020 gefiltert wird. Die funktion MAX gibt den 30. Juni 2020 zurück. Die funktion DATESINPERIOD gibt dann einen Datumsbereich vom 1. Juli 2019 bis zum 30. Juni 2020 zurück. Es ist ein Jahr von Datumswerten ab dem 30. Juni 2020 für das letzte Jahr.
Beispiel für kalenderbasierte Zeitintelligenz
In der folgenden Definition von "Sales table measure" wird die DATESINPERIOD-Funktion verwendet, um den Umsatz für das Vorjahr (PY) zu berechnen.
Beachten Sie, dass die Formel die funktion MAX verwendet. Diese Funktion gibt das neueste Datum zurück, das sich im Filterkontext befindet. Daher gibt die DATESINPERIOD Funktion primäre Spalten zurück, die vom spätesten Datum für das letzte Jahr beginnen. DateKey wird als Beispiel verwendet, um anzuzeigen, dass die Kategorie "Tag" mit einer Spalte markiert werden kann, die nicht datumstypiert ist.
Beispiele in diesem Artikel können mit dem Beispielmodell Adventure Works DW 2020 Power BI Desktop verwendet werden. Informationen zum Abrufen des Modells finden Sie unter DAX Beispielmodell.
Revenue PY =
CALCULATE (
SUM ( Sales[Sales Amount] ),
DATESINPERIOD ( FiscalCalendar, MAX ( 'Date'[DateKey] ), -1, YEAR )
)
Beachten Sie, dass der Bericht nach dem Monat Juni 2020 gefiltert wird. Die funktion MAX gibt den 30. Juni 2020 zurück. Die DATESINPERIOD Funktion gibt dann einen Bereich vom 1. Juli 2019 bis zum 30. Juni 2020 zurück. Es ist ein Jahr ab dem 30. Juni 2020 für das letzte Jahr.
Grundlegendes zum Endbehavior-Parameter für die Kalenderzeitintelligenz
Berechnet intern die Endgrenze, DATESINPERIOD indem DATEADD sie mit demselben Intervall, der Anzahl der Intervalle und endbehavior der übergebenen Intervalle aufruft DATESINPERIOD. Wenn number_of_intervals es sich um ein negatives (häufiges Rollieren eines Fensters nach hinten) handelt, gibt die Funktion den Bereich (endDate, startDate]zurück. Dabei handelt es sich um das Datum, endDate das nach DATEADD dem Verschieben des Kalenderkontexts zurückgegeben wird, der mit <number_of_intervals><interval> der Verwendung <endbehavior>endetstartDate. Bei positiven Werten lautet [startDate, endDate)das zurückgegebene Intervall .
-
PRECISEbehält den exakten Wert bei, der von DATEADD. -
ENDALIGNEDfolgt der DATEADDEndAlignedSemantik, wobei die Grenze an das Ende des Zielzeitraums verschoben wird, wenn die Quellauswahl bereits ein eigenes Ende erreicht hat. Dies ist nützlich, wenn der Filterkontext bereits am letzten Tag eines Punkts endet und Sie möchten, dass ein rückwärts gerichtetes Fenster (z. B. sechs Monate) den letzten Tag des verschobenen Zeitraums als Grenze verwendet.
Beispiel mit EndAligned
EndAlignedTest =
CALCULATE (
COUNTROWS ( SUMMARIZE ( Sales, 'Date'[MonthName] ) ),
DATESINPERIOD ( 'Gregorian Calendar', MAX ( 'Date'[Date] ), -6, MONTH, EndAligned )
)
Dieses Measure zählt die eindeutigen Monatsnamen in den letzten sechs Monaten relativ zum aktuellen Kontext. Mit EndAligned, das Fenster behält die Grenze am Ende des verschobenen Monats bei, wenn der Kontext bereits auf einer Monatsgrenze endet, und verhindert, dass Precise die zusätzlichen nachgestellten Datumsangaben eingeschlossen werden (z Feb 28 . B. verschieben Aug 28, ziehen Aug 29–31 und effektiv die Spanne auf sieben Monate erweitern). Die EndAligned Einstellung behält die Anzahl bei sechs in diesem Szenario bei.
Im folgenden Vergleich wird davon ausgegangen, dass der aktuelle Filterkontext am 28. Februar 2023 endet und der Ausdruck aufruft DATESINPERIOD(..., -6, MONTH, <endbehavior>). Der Funktionsbereich ist (endDate, startDate], sodass die endDate rückgabe von DATEADD ausgeschlossen wird, während startDate sie enthalten ist.
| endbehavior |
DATEADD endDate |
DATESINPERIOD Bereich | Monatsnamen, die vom Measure zurückgegeben werden |
|---|---|---|---|
Precise |
2022-08-28 |
(2022-08-28, 2023-02-28] → 29. August 2022 – 28. Februar 2023 |
Aug, Sep, Okt, Nov, Dez, Jan, Februar (7) |
EndAligned |
2022-08-31 |
(2022-08-31, 2023-02-28] → 1. September 2022 – 28. Februar 2023 |
Sep, Okt, Nov, Dez, Jan, Februar (6) |
Unterschiede im Verhalten zwischen klassischer und Kalenderzeitintelligenz
DATESINPERIOD Intern verwendet die gleiche Logik wie DATEADD zum Bestimmen des Enddatums vom Startdatum und dann die Berechnung des Bereichs. Einige Szenarien können beim Vergleichen der klassischen und kalenderzeitintelligenz unterschiedliche Ergebnisse erzielen. Beispielsweise erzeugt in einem Mondjahr DATEADD unterschiedliche Ergebnisse an der Granularität des Datums, sodass auch das Ergebnis DATESINPERIOD unterschiedlich sein wird. In kalenderbasierten Zeitintelligenz führt die Verschiebung vom 29. Februar 2008 zurück zu einem Jahr zum 1. März 2007, da es als 60. Tag des Jahres behandelt wird. In der klassischen Zeitintelligenz gibt die gleiche Schicht den 28. Februar 2007 zurück. Da sich das Enddatum unterscheidet, unterscheidet sich die Ausgabe ebenfalls DATESINPERIOD . Die Problemumgehung besteht darin, das Enddatum zu berechnen DATEADD(Kalender, -<Zahl eines Jahres>, Monats). Wenn ein Jahr beispielsweise 13 Monate im Kalender hat, verwenden Sie DATEADD(Kalender, -13, Monat). Dieser Ansatz wird sich nach Monat verschieben, sodass Februar 2008 auf Februar 2007 verschoben wird. Schreiben Sie dann basierend auf dem neuen Enddatum ein benutzerdefiniertes DateInPeriod.
Verwandte Inhalte
Zeitintelligenzfunktionen (DAX)Datums- und Uhrzeitfunktionen (DAX)DATESBETWEEN Funktion (DAX)