Poznámka
Na prístup k tejto stránke sa vyžaduje oprávnenie. Môžete sa skúsiť prihlásiť alebo zmeniť adresáre.
Na prístup k tejto stránke sa vyžaduje oprávnenie. Môžete skúsiť zmeniť adresáre.
Vzťahuje sa na:
vypočítaný stĺpec
vypočítanej tabuľky![]()
vizuálového výpočtu
Nota
Táto funkcia sa neodporúča používať vo výpočtoch vizuálov, pretože pravdepodobne vráti nezmyselné výsledky.
V prípade vstupu stĺpca dátumu vráti tabuľku obsahujúcu stĺpec dátumov, ktorý sa začína zadaným počiatočným dátumom a pokračuje zadaným počtom a typom dátumových intervalov.
V prípade vstupu v kalendári vráti tabuľku, ktorá začína zadaným počiatočným dátumom a pokračuje podľa zadaného počtu a typu dátumových intervalov. Tabuľka obsahuje všetky primárne tagované stĺpce a všetky stĺpce súvisiace s časom.
Táto funkcia je vhodná na odovzdanie filtra funkcii CALCULATE. Použite ju na filtrovanie výrazu podľa štandardných dátumových intervalov, ako sú dni, mesiace, štvrťroky alebo roky.
Syntax
DATESINPERIOD(<dates> or <calendar>, <start_date>, <number_of_intervals>, <interval>[, <endbehavior>])
Parametre
| Termín | Definícia |
|---|---|
dates or calendar |
Stĺpec, ktorý obsahuje dátumy alebo odkaz na kalendár |
start_date |
Výraz dátumu. Ak sa používa syntax kalendára, použite rovnaký typ údajov ako primárny stĺpec označený kategóriou Deň. |
number_of_intervals |
Celé číslo určujú ktoré určuje počet intervalov, ktoré sa majú pripočítať k dátumom alebo od týchto dátumov odpočítať. |
interval |
Interval, o ktorý sa majú posunúť dátumy. Interval môže mať jednu z týchto hodnôt: DAY, , WEEKMONTH, QUARTERa YEAR. Týždeň sa dá použiť iba s kalendárom. |
endbehavior |
Platí len vtedy, ak sa poskytuje odkaz na kalendár. Voliteľné. Určuje zarovnanie koncového dátumu, keď je cieľový interval dlhší ako zdrojové rozpätie. Platné hodnoty sú: PRECISE (predvolené) a ENDALIGNED. |
Vrátená hodnota
V prípade vstupu stĺpca dátumu je to tabuľka obsahujúca jeden stĺpec dátumových hodnôt.
V prípade vstupu v kalendári je to tabuľka, ktorá obsahuje všetky primárne označené stĺpce a všetky stĺpce súvisiace s časom.
Poznámky
V prípade najčastejších použití je
datesodkazom na stĺpec dátumu označenej tabuľky dátumov.Ak je číslo zadané pre
number_of_intervalskladné, dátumy sa posunú v čase dopredu; Ak je číslo záporné, dátumy sa posunú v čase späť.Parameter
intervalje enumerácia. Platné hodnoty súDAY,WEEK,MONTH,QUARTER, aYEAR. Keďže ide o enumeráciu, hodnoty sa neodovzdia ako reťazce. Takže ich nepridávajte do úvodzoviek.Keď
endbehaviorje zadaná (iba časová inteligencia kalendára), DATESINPERIOD preposiela hodnotu do DATEADDparametra .ExtensionPodrobné príklady nájdete v téme Vysvetlenie správania .V prípade vstupu stĺpca dátumu môže vrátená tabuľka obsahovať iba dátumy uložené v stĺpci
dates. Ak napríklad stĺpecdateszačína od 1. júla 2017 astart_datehodnota je 1. júla 2016, vrátená tabuľka bude začínať od 1. júla 2017.Pre vstup v kalendári platí, že ak sa vstupný dátum nenájde v stĺpci označeného dňa, výsledok bude nedefinovaný. Zadajte platný vstup dátumu.
Pre vstup v kalendári použite rovnaký typ údajov a formát ako tagovaný stĺpec deň pre počiatočný dátum. Ak napríklad stĺpec používa formát YYYY-Sn-Qn-Mnn-Wnn-Dnn (napríklad "2014-S2-Q4-M11-W45-D03"), počiatočný dátum musí mať rovnaký formát (napr. "2015-S2-Q4-M11-W45-D03"). V opačnom prípade správanie nie je definované.
-
Táto funkcia nie je podporovaná na použitie v režime DirectQuery, keď sa používa vo vypočítaných stĺpcoch alebo v pravidlách zabezpečenia na úrovni riadkov (RLS).
Príklad
Nasledujúca definícia mierky tabuľky Sales používa funkciu DATESINPERIOD na výpočet výnosov za predchádzajúci rok (PY).
Všimnite si, že vzorec používa funkciu MAX. Táto funkcia vráti posledný dátum, ktorý je v kontexte filtra. Funkcia DATESINPERIOD tak vráti tabuľku dátumov začínajúcich od posledného dátumu za posledný rok.
Príklady v tomto článku možno použiť so vzorovým modelom aplikácie Power BI Desktop Adventure Works DW 2020. Ak chcete získať model, pozrite si DAX ukážkový model.
Revenue PY =
CALCULATE (
SUM ( Sales[Sales Amount] ),
DATESINPERIOD ( 'Date'[Date], MAX ( 'Date'[Date] ), -1, YEAR )
)
Predpokladajme, že zostava je filtrovaná podľa mesiaca jún 2020. Funkcia MAX vráti dátum 30. júna 2020. Funkcia DATESINPERIOD potom vráti rozsah dátumov od 1. júla 2019 do 30. júna 2020. Je to rok dátumov hodnôt začínajúcich od 30. júna 2020 za posledný rok.
Príklad časovej inteligencie založenej na kalendári
Nasledujúca definícia mierky tabuľky Sales používa funkciu DATESINPERIOD na výpočet výnosov za predchádzajúci rok (PY).
Všimnite si, že vzorec používa funkciu MAX. Táto funkcia vráti posledný dátum, ktorý je v kontexte filtra. Funkcia tak DATESINPERIOD vráti primárne stĺpce začínajúce od posledného dátumu za posledný rok. KódDátumu sa používa ako príklad na zobrazenie toho, že kategória Deň môže byť označená stĺpcom, ktorý nie je zadaný dátumom.
Príklady v tomto článku možno použiť so vzorovým modelom aplikácie Power BI Desktop Adventure Works DW 2020. Ak chcete získať model, pozrite si DAX ukážkový model.
Revenue PY =
CALCULATE (
SUM ( Sales[Sales Amount] ),
DATESINPERIOD ( FiscalCalendar, MAX ( 'Date'[DateKey] ), -1, YEAR )
)
Predpokladajme, že zostava je filtrovaná podľa mesiaca jún 2020. Funkcia MAX vráti dátum 30. júna 2020. Funkcia DATESINPERIOD potom vráti rozsah od 1. júla 2019 do 30. júna 2020. Je to rok začínajúci od 30. júna 2020 za posledný rok.
Vysvetlenie parametra endbehavior pre časová inteligencia kalendára
Interne DATESINPERIOD vypočíta koncové ohraničenie zavolaním DATEADD rovnakého intervalu, počtu intervalov a endbehavior tých, ktoré boli prenesené do .DATESINPERIOD Keď number_of_intervals je záporná (bežná pri posúvaní okna dozadu), funkcia vráti rozsah (endDate, startDate], kde endDate sa dátum, ktorý DATEADD vráti po zmene kontextu kalendára, ktorý končí startDate použitím <endbehavior><number_of_intervals><interval> funkcie . V prípade kladných hodnôt je [startDate, endDate)vrátený interval .
-
PRECISEfunkcia zachová presnú hodnotu vrátenú funkciou DATEADD. -
ENDALIGNEDsleduje sémantiku DATEADDEndAligneda posúva hranicu na koniec cieľového obdobia, keď už zdrojový výber dosiahol svoj vlastný koniec. Je to užitočné, keď kontext filtra už končí v posledný deň obdobia a chcete, aby sa spätne vyzerajúce okno (napríklad šesť mesiacov) použilo posledný deň posunutého obdobia ako svoju hranicu.
Príklad s funkciou EndAligned
EndAlignedTest =
CALCULATE (
COUNTROWS ( SUMMARIZE ( Sales, 'Date'[MonthName] ) ),
DATESINPERIOD ( 'Gregorian Calendar', MAX ( 'Date'[Date] ), -6, MONTH, EndAligned )
)
Táto mierka vypočíta rozdielne názvy mesiacov za posledných šesť mesiacov vzhľadom na aktuálny kontext. Pomocou EndAlignedfunkcie sa okno zachová hranicu na konci posunutého mesiaca, keď kontext už končí na mesačnej hranici, čím sa zabráni ďalším koncovým dátumom, Feb 28 ktoré Precise by obsahovali (napríklad by sa inak presunuli na Aug 28, načítavanie Aug 29–31 a efektívne rozšírenie obdobia na sedem mesiacov). Nastavenie EndAligned zachová počet v šiestich v danom scenári.
V nasledujúcom porovnaní sa predpokladá, že aktuálny kontext filtra končí 28. februára 2023 a výraz zavolá DATESINPERIOD(..., -6, MONTH, <endbehavior>). Funkčný rozsah je (endDate, startDate], takže hodnota endDate vrátená parametrom DATEADD je vynechaná, kým startDate je zahrnutá.
| endbehavior |
DATEADD Dátum ukončenia |
DATESINPERIOD rozsah | Názvy mesiacov vrátené mierkou |
|---|---|---|---|
Precise |
2022-08-28 |
(2022-08-28, 2023-02-28] → 29. augusta 2022 – 28. feb 2023 |
August, Sep, Október, November, Dec, Jan, Feb (7) |
EndAligned |
2022-08-31 |
(2022-08-31, 2023-02-28] → 1. sep 2022 – 28. feb 2023 |
Sep, Október, November, Dec, Jan, Feb (6) |
Rozdiely v správaní medzi klasickou časovou inteligenciou a časovou inteligenciou kalendára
Interne DATESINPERIOD používa rovnakú logiku ako DATEADD na určenie koncového dátumu od počiatočného dátumu a potom vypočíta rozsah. Niektoré scenáre môžu priniesť rôzne výsledky pri porovnávaní klasickej časovej inteligencie a časovej inteligencie kalendára. Napríklad v lunárny rok DATEADD produkuje rôzne výsledky k dátumu granularitu, takže výsledok DATESINPERIOD sa bude líšiť tiež. V kalendárnej časovej inteligencii, posunutie 29 februára 2008 späť o rok má za následok Mar 1 2007, pretože sa považuje za 60. deň v roku. V klasickej časovej inteligencii, rovnaký posun vráti 28 februára 2007. Keďže koncový dátum sa líši, výstup DATESINPERIOD funkcie sa bude tiež líšiť. Alternatívnym riešením je použiť DATEADDna výpočet dátumu ukončenia (kalendár, číslo< roka>, mesiaca). Ak má napríklad rok 13 mesiacov v kalendári, použite ( DATEADDKalendár, -13, mesiac). Tento prístup sa posunie o mesiac, takže február 2008 pôjde do februára 2007. Potom na základe nového koncového dátumu zapíšte vlastný parameter datesInPeriod.