Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:
Počítaný sloupec
Počítaná tabulka
míra
vizuální
Poznámka
Tato funkce se nedoporučuje používat ve vizuálních výpočtech, protože pravděpodobně vrací nesmyslné výsledky.
Pro zadání sloupce kalendářního data vrátí tabulku, která obsahuje sloupec kalendářních dat začínající zadaným počátečním datem a pokračuje pro zadané číslo a typ intervalů kalendářních dat.
Pro vstup kalendáře vrátí tabulku, která začíná zadaným počátečním datem a pokračuje pro zadané číslo a typ intervalů kalendářních dat. Tabulka obsahuje všechny primární označené sloupce a všechny sloupce související s časem.
Tato funkce je vhodná k předání jako filtru do CALCULATE funkce. Slouží k filtrování výrazu podle standardních intervalů kalendářních dat, jako jsou dny, měsíce, čtvrtletí nebo roky.
Syntax
DATESINPERIOD(<dates or calendar>, <start_date>, <number_of_intervals>, <interval>[, <endbehavior>])
Parametry
| Semestr | Definice |
|---|---|
dates or calendar |
Sloupec, který obsahuje kalendářní data nebo odkaz na kalendář |
start_date |
Výraz data. Pokud se používá syntaxe kalendáře, použijte stejný datový typ jako primární sloupec označený kategorií Den. |
number_of_intervals |
Celé číslo, které určuje počet intervalů, které se mají sčítat k kalendářním datům nebo od něj odečítat. |
interval |
Interval, o který se mají data posunout. Hodnota intervalu může být jedna z následujících hodnot: DAY, WEEK, MONTH, QUARTER, a YEAR. Můžete použít WEEK jenom s odkazem na kalendář. |
endbehavior |
Platí jenom v případě, že zadáte odkaz na kalendář. Optional. Určuje, jak se koncové datum zarovná, když je cílový interval delší než rozsah zdroje. Platné hodnoty jsou: PRECISE (výchozí) a ENDALIGNED. |
Návratová hodnota
Pro vstup sloupce kalendářního data tabulka obsahující jeden sloupec hodnot kalendářních dat.
Pro vstup kalendáře tabulka, která obsahuje všechny primární označené sloupce a všechny související sloupce času.
Poznámky
V nejběžnějším případě použití je
datesodkazem na sloupec kalendářních dat označené tabulky kalendářních dat.Pokud je číslo zadané pro
number_of_intervalskladné, posunou se data dopředu v čase; pokud je číslo záporné, posunou se data v čase zpět.Parametr
intervalje výčet. Platné hodnoty jsouDAY, ,WEEKMONTH,QUARTERaYEAR. Protože se jedná o výčet, hodnoty se nepředávají jako řetězce. Proto je nezavřete do uvozovek.Pokud
endbehaviorje k dispozici (pouze časové měřítko kalendáře), DATESINPERIOD předá hodnotu DATEADDparametruExtension. Podrobné příklady najdete v tématu Vysvětlení chování endbehavior .Pro vstup sloupce kalendářních dat může vrácená tabulka obsahovat pouze kalendářní data uložená ve sloupci
dates. Pokud napříkladdatessloupec začíná od 1. července 2017 astart_datehodnota je 1. července 2016, vrátí se tabulka od 1. července 2017.Pokud vstupní datum v označeném sloupci dne nenajdete u vstupu kalendáře, výsledek není definován.
Pro vstup kalendáře použijte stejný datový typ a formát jako sloupec označený den pro počáteční datum. Pokud například sloupec používá formát RRRR-Sn-Qn-Mnn-Wnn-Dnn (např. "2014-S2-Q4-M11-W45-D03"), musí počáteční datum následovat ve stejném formátu (např. "2015-S2-Q4-M11-W45-D03"). V opačném případě je chování nedefinované.
-
Tato funkce není podporována pro použití v režimu DirectQuery při použití v počítaných sloupcích nebo pravidlech zabezpečení na úrovni řádků (RLS).
Příklad
Následující definice míry Sales tabulky používá funkci DATESINPERIOD k výpočtu výnosů za předchozí rok (PY).
Vzorec používá MAX funkci. Tato funkce vrátí nejnovější datum, které je v kontextu filtru. Funkce DATESINPERIOD tedy vrátí tabulku kalendářních dat počínaje posledním datem za poslední rok.
Příklady v tomto článku můžete použít s ukázkovým modelem Adventure Works DW 2020 Power BI Desktopu. Pokud chcete model získat, podívejte se na DAX ukázkový model.
Revenue PY =
CALCULATE (
SUM ( Sales[Sales Amount] ),
DATESINPERIOD ( 'Date'[Date], MAX ( 'Date'[Date] ), -1, YEAR )
)
Sestava se filtruje podle měsíce června 2020. Funkce MAX vrátí 30. června 2020. Funkce DATESINPERIOD pak vrátí rozsah kalendářních dat od 1. července 2019 do 30. června 2020. Jedná se o rok hodnot kalendářních dat od 30. června 2020 za poslední rok.
Příklad časového měřítka na základě kalendáře
Následující definice míry Sales tabulky používá funkci DATESINPERIOD k výpočtu výnosů za předchozí rok (PY).
Vzorec používá MAX funkci. Tato funkce vrátí nejnovější datum, které je v kontextu filtru. DATESINPERIOD Funkce tedy vrátí primární sloupce začínající od posledního data za poslední rok. Jako příklad použijeme DateKey, abychom ukázali, že kategorii Den lze označit sloupcem, který není zadaný datem.
Příklady v tomto článku můžete použít s ukázkovým modelem Adventure Works DW 2020 Power BI Desktopu. Pokud chcete model získat, podívejte se na DAX ukázkový model.
Revenue PY =
CALCULATE (
SUM ( Sales[Sales Amount] ),
DATESINPERIOD ( FiscalCalendar, MAX ( 'Date'[DateKey] ), -1, YEAR )
)
Sestava se filtruje podle měsíce června 2020. Funkce MAX vrátí 30. června 2020. Funkce DATESINPERIOD pak vrátí rozsah od 1. července 2019 do 30. června 2020. Je to rok od 30. června 2020 za poslední rok.
Vysvětlení parametru endbehavior pro časové měřítko kalendáře
Interně DATESINPERIOD vypočítá koncovou hranici voláním DATEADD se stejným intervalem, počtem intervalů a endbehavior předanými do DATESINPERIOD. Pokud number_of_intervals je záporná (společná při vrácení okna dozadu), vrátí funkce rozsah (endDate, startDate], kde endDate je datum vrácené DATEADD po posunu kontextu kalendáře, který končístartDate<number_of_intervals><interval>pomocí .<endbehavior> Pro kladné hodnoty je [startDate, endDate)vrácený interval .
-
PRECISEzachová přesnou hodnotu vrácenou DATEADDhodnotou . -
ENDALIGNEDDATEADDEndAlignedse řídí sémantikou, přesunutí hranice na konec cílového období, když výběr zdroje již dosáhl vlastního konce. To je užitečné, když kontext filtru už končí posledním dnem období a chcete, aby okno zpětného vyhledávání (například šest měsíců) používalo poslední den posunutého období jako jeho hranice.
Příklad s EndAligned
EndAlignedTest =
CALCULATE (
COUNTROWS ( SUMMARIZE ( Sales, 'Date'[MonthName] ) ),
DATESINPERIOD ( 'Gregorian Calendar', MAX ( 'Date'[Date] ), -6, MONTH, EndAligned )
)
Tato míra počítá jedinečné názvy měsíců za posledních šest měsíců vzhledem k aktuálnímu kontextu. V EndAlignedpřípadě, že okno udržuje hranici na konci posunutého měsíce, když kontext již končí na hranici měsíce, brání dalším koncovým datům, Precise která Feb 28 by zahrnovala (například by jinak posun na Aug 28, vytažení Aug 29–31 a efektivní rozšíření rozsahu na sedm měsíců). Nastavení EndAligned uchovává počet v tomto scénáři na šest.
Následující porovnání předpokládá, že aktuální kontext filtru končí 28. února 2023 a volání DATESINPERIOD(..., -6, MONTH, <endbehavior>)výrazu . Funkční rozsah je (endDate, startDate], takže endDate vrácený je DATEADD vyloučen, zatímco startDate je zahrnut.
| endbehavior |
DATEADD Enddate |
DATESINPERIOD rozmezí | Názvy měsíců vrácené mírou |
|---|---|---|---|
Precise |
2022-08-28 |
(2022-08-28, 2023-02-28] → 29. února 2022 – 28. února 2023 |
Aug, Sep, Oct, Nov, Dec, Jan, Feb (7) |
EndAligned |
2022-08-31 |
(2022-08-31, 2023-02-28] → zář 1 2022 – 28. února 2023 |
Sep, Oct, Nov, Dec, Jan, Feb (6) |
Rozdíly v chování mezi klasickým a kalendářním časovým měřítkem
Interně DATESINPERIOD používá stejnou logiku jako DATEADD k určení koncového data od počátečního data a následnému výpočtu rozsahu. Některé scénáře můžou přinést různé výsledky při porovnávání klasického a kalendářního časového měřítka. Například v lunárním roce DATEADD vytváří různé výsledky v datech členitosti, takže výsledek DATESINPERIOD se liší i. V kalendářním časovém měřítku má posun 29. února 2008 zpět jeden rok v 1. maru 2007, protože se považuje za 60. den roku. V klasickém časovém měřítku vrátí stejný posun 28. února 2007. Vzhledem k tomu, že se koncové datum liší, výstup DATESINPERIOD se také liší. Alternativním řešením je použít DATEADDk výpočtu koncového data (Calendar, -<number of a year>, month). Pokud má například rok v kalendáři 13 měsíců, použijte DATEADD(Kalendář, -13, měsíc). Tento přístup se posune o měsíc, takže únor 2008 přejde na únor 2007. Potom napište vlastní dataInPeriod na základě nového koncového data.
Související obsah
- funkce časového měřítka (DAX)
- funkce data a času (DAX)
- funkce DATESBETWEEN (DAX)