DATESINPERIOD

A következőkre vonatkozik:Számított oszlopSzámított táblaMértékVizualizációszámítási

Jegyzet

Ez a függvény nem használható vizualizációs számításokban, mivel valószínűleg értelmetlen eredményeket ad vissza.

Dátumoszlop bemenete esetén egy táblát ad vissza, amely egy megadott kezdő dátummal kezdődő dátumoszlopot tartalmaz, és a megadott számú és típusú dátumintervallumra folytatódik.

Naptárbemenet esetén egy táblát ad vissza, amely egy megadott kezdő dátummal kezdődik, és a megadott számú és típusú dátumintervallummal folytatódik. A táblázat tartalmazza az összes elsődleges címkézett oszlopot és az összes kapcsolódó oszlopot.

Ez a függvény alkalmas arra, hogy szűrőként átadja a CALCULATE függvénynek. Segítségével szűrhet egy kifejezést standard dátumintervallumok, például napok, hónapok, negyedévek vagy évek szerint.

Szintaxis

DATESINPERIOD(<dates> or <calendar>, <start_date>, <number_of_intervals>, <interval>[, <endbehavior>])

Paraméterek

Kifejezés Definíció
dates or calendar Dátumokat vagy naptárhivatkozást tartalmazó oszlop
start_date Dátumkifejezés. Ha naptárszintaxis van használatban, használja ugyanazt az adattípust, mint a Nap kategóriára címkézett elsődleges oszlop.
number_of_intervals Egész szám, amely a dátumokhoz hozzáadandó vagy abból kivonandó intervallumok számát adja meg.
interval Az az intervallum, amellyel el szeretné tolni a dátumokat. Az intervallum értéke a következők egyike lehet: DAY, WEEK, MONTH, QUARTERés YEAR. A hét csak naptárral használható.
endbehavior Csak akkor alkalmazható, ha naptárhivatkozást ad meg. Opcionális. Azt szabályozza, hogy a befejezési dátum hogyan legyen igazítva, ha a célintervallum hosszabb, mint a forrástartomány. Az érvényes értékek a következők: PONTOS (alapértelmezett) és ENDALIGNED.

Visszaadott érték

Dátumoszlop bemenete esetén a dátumértékek egyetlen oszlopát tartalmazó táblázat.
Naptárbemenet esetén olyan táblázat, amely az összes elsődleges címkézett oszlopot és minden időben kapcsolódó oszlopot tartalmazza.

Megjegyzések

  • A leggyakoribb használati esetben a dates egy megjelölt dátumtábla dátumoszlopára mutató hivatkozás.

  • Ha a number_of_intervals megadott szám pozitív, a dátumok előrehaladnak az időben; ha a szám negatív, a dátumok visszafelé kerülnek az időben.

  • A interval paraméter enumerálás. Az érvényes értékek a következőkDAY: , WEEK, MONTHQUARTERés YEAR. Mivel enumerálásról van szó, az értékek nem sztringekként lesznek átadva. Ezért ne tegye őket idézőjelek közé.

  • Ha endbehavior meg van adva (csak a naptári időintelligencia), DATESINPERIOD az értéket továbbítja a paraméternekDATEADDExtension. Részletes példákért lásd az endbehavior ismertetése című témakört.

  • Dátumoszlop bemenete esetén a visszaadott tábla csak az dates oszlopban tárolt dátumokat tartalmazhat. Így például ha a dates oszlop 2017. július 1-től kezdődik, és a start_date értéke 2016. július 1., akkor a visszaadott tábla 2017. július 1-től kezdődik.

  • Naptárbemenet esetén, ha a beviteli dátum nem található a címkézett nap oszlopban, az eredmény nem lesz definiálva. Adjon meg érvényes dátumbevitelt.

  • Naptárbemenethez használja ugyanazt az adattípust és formátumot, mint a kezdő dátum címkézett nap oszlopa. Ha például az oszlop YYYYY-Sn-Qn-Mnn-Wnn-Dnn formátumot használ (például "2014-S2-Q4-M11-W45-D03" formátumban), a kezdő dátumnak ugyanazt a formátumot kell követnie (pl. "2015-S2-Q4-M11-W45-D03"). Ellenkező esetben a viselkedés nincs meghatározva.

  • Ez a függvény nem támogatott DirectQuery módban, ha számított oszlopokban vagy sorszintű biztonsági (RLS) szabályokban használják.

Példa

Az alábbi Sales tábla mértékdefiníciója a DATESINPERIOD függvénnyel számítja ki az előző évi bevételt (PY).

Figyelje meg, hogy a képlet a MAX függvényt használja. Ez a függvény a szűrőkörnyezet legújabb dátumát adja vissza. A DATESINPERIOD függvény tehát egy dátumtáblát ad vissza, amely az elmúlt év legutóbbi dátumától kezdve kezdődik.

A cikkben szereplő példák az Adventure Works DW 2020 Power BI Desktop-modellel használhatók. A modell lekéréséhez tekintse meg DAX mintamodell.

Revenue PY =
CALCULATE (
    SUM ( Sales[Sales Amount] ),
    DATESINPERIOD ( 'Date'[Date], MAX ( 'Date'[Date] ), -1, YEAR )
)

Vegye figyelembe, hogy a jelentést a 2020. júniusi hónap szűri. A MAX függvény 2020. június 30-át adja vissza. A DATESINPERIOD függvény ezután egy dátumtartományt ad vissza 2019. július 1-től 2020. június 30-ig. 2020. június 30-tól kezdődő dátumértékek éve az elmúlt évben.

Példa a naptáralapú időintelligencia-szolgáltatásra

Az alábbi Sales tábla mértékdefiníciója a DATESINPERIOD függvénnyel számítja ki az előző évi bevételt (PY).

Figyelje meg, hogy a képlet a MAX függvényt használja. Ez a függvény a szűrőkörnyezet legújabb dátumát adja vissza. A függvény tehát az DATESINPERIOD előző év utolsó dátumától kezdődő elsődleges oszlopokat adja vissza. A DateKey példaként szolgál annak szemléltetésére, hogy a "Nap" kategória címkézhető egy olyan oszlopmal, amely nem dátum típusú.

A cikkben szereplő példák az Adventure Works DW 2020 Power BI Desktop-modellel használhatók. A modell lekéréséhez tekintse meg DAX mintamodell.

Revenue PY =
CALCULATE (
    SUM ( Sales[Sales Amount] ),
    DATESINPERIOD ( FiscalCalendar, MAX ( 'Date'[DateKey] ), -1, YEAR )
)

Vegye figyelembe, hogy a jelentést a 2020. júniusi hónap szűri. A MAX függvény 2020. június 30-át adja vissza. A DATESINPERIOD függvény ezután egy tartományt ad vissza 2019. július 1-től 2020. június 30-ig. Ez az év 2020. június 30-tól kezdődik az elmúlt évben.

A naptáridő-intelligencia endbehavior paraméterének ismertetése

Belsőleg DATESINPERIOD kiszámítja a záró határt DATEADD ugyanazzal az intervallummal, az intervallumok számával és endbehavior a megadott DATESINPERIODértékekkel. Ha number_of_intervals negatív (az ablak hátragördülésekor gyakori), a függvény a tartományt (endDate, startDate]adja vissza, ahol endDate az a dátum jelenik meg, amelyet DATEADD a függvény a használatával startDatevégződő <number_of_intervals><interval><endbehavior> naptárkörnyezet eltolása után ad vissza. Pozitív értékek esetén a visszaadott intervallum .[startDate, endDate)

  • PRECISE megtartja a visszaadott DATEADDpontos értéket.
  • ENDALIGNED követi a DATEADDEndAligned szemantikát, és a határt a célidőszak végére helyezi át, amikor a forráskijelölés már elérte a saját végét. Ez akkor hasznos, ha a szűrőkörnyezet már egy időszak utolsó napján véget ér, és azt szeretné, hogy egy visszatekintő ablak (például hat hónap) az eltolt időszak utolsó napját használja annak határaként.

Példa az EndAligned használatával

EndAlignedTest =
    CALCULATE (
        COUNTROWS ( SUMMARIZE ( Sales, 'Date'[MonthName] ) ),
        DATESINPERIOD ( 'Gregorian Calendar', MAX ( 'Date'[Date] ), -6, MONTH, EndAligned )
    )

Ez a mérték megszámolja az elmúlt hat hónap különböző hónapneveit az aktuális környezethez viszonyítva. Ezzel EndAlignedaz ablak az eltolt hónap végén tartja a határt, amikor a környezet már egy hónap határán végződik, megakadályozva a további záró dátumokat, amelyek Precise belefoglalnának (például Feb 28 ellenkező esetben áttérne Aug 28a hét hónapra, behúzná Aug 29–31 és ténylegesen kiterjesztené a tartományt). Ebben EndAligned a forgatókönyvben a beállítás hatnál tartja a darabszámot.

Az alábbi összehasonlítás feltételezi, hogy az aktuális szűrőkörnyezet 2023. február 28-án ér véget, és a kifejezés meghívja DATESINPERIOD(..., -6, MONTH, <endbehavior>). A funkcionális tartomány , (endDate, startDate]így a endDate visszaadott érték DATEADD ki van zárva, amíg startDate a rendszer belefoglalja.

endbehavior DATEADD endDate DATESINPERIOD tartomány A mérték által visszaadott hónapnevek
Precise 2022-08-28 (2022-08-28, 2023-02-28] → 2022. augusztus 29. – 2023. február 28. augusztus, szeptember, október, nov, dec, jan, feb (7)
EndAligned 2022-08-31 (2022-08-31, 2023-02-28] → 2022. szeptember 1. – 2023. február 28. szeptember, október, nov, dec, jan, feb (6)

A klasszikus és a naptár időintelligencia közötti viselkedésbeli különbségek

Belsőleg ugyanazt a logikát használja, DATESINPERIOD mint DATEADD a kezdő dátum záró dátumának meghatározásához, majd kiszámítja a tartományt. Egyes forgatókönyvek eltérő eredményeket hozhatnak a klasszikus és a naptári időintelligencia összehasonlításakor. Egy holdévben DATEADD például a dátum részletessége eltérő eredményeket eredményez, így az eredmény DATESINPERIOD is eltérő lesz. A naptáralapú időintelligencia szerint a 2008. február 29-i visszatolás egy évre visszamenőleg 2007. március 1-jei eredményt ad, mivel az év 60. napjaként kezelik. A klasszikus időintelligencia esetén ugyanez a műszak 2007. február 28-át adja vissza. Mivel a befejezési dátum eltér, a kimenete DATESINPERIOD is eltérő lesz. A megkerülő megoldás a befejezési dátum kiszámításához (Naptár, -DATEADDszám, év<, hónap) használható>. Ha például egy évben 13 hónap szerepel a naptárban, használja a ( DATEADDNaptár, -13, hónap) lehetőséget. Ez a megközelítés hónapról hónapra változik, így 2008 februárja 2007. Ezután írjon egy egyéni dátumotInPeriod az új befejezési dátum alapján.