Použití funkcí časového měřítka v jazyce DAX

Dokončeno

Jazyk DAX obsahuje několik funkcí časového měřítka, které zjednodušují práci při úpravách kontextu filtru data. Mnohé z těchto inteligentních vzorců byste mohli napsat pomocí CALCULATE funkce, která upravuje filtry kalendářních dat, ale tím byste vytvořili více práce.

Poznámka

Mnoho funkcí časového měřítka DAX se týká standardních kalendářních období, konkrétně let, čtvrtletí a měsíců. Pokud máte nepravidelné časové intervaly (například finanční měsíce, které začínají uprostřed kalendářního měsíce) nebo potřebujete pracovat s týdny nebo časovými intervaly (hodiny, minuty atd.), analytické funkce časového měřítka DAX vám nepomohou. Místo toho budete muset použít CALCULATE funkci a předat ručně vytvořené filtry data nebo času.

Požadavek na tabulku kalendářních dat

Pokud chcete pracovat s funkcemi časového měřítka v jazyce DAX, je nutné splnit nezbytný požadavek na model: mít v něm alespoň jednu tabulku kalendářních dat. Tabulka kalendářních dat je tabulka, která splňuje následující požadavky:

  • Musí mít sloupec datového typu datum (nebo datum/čas), který se označuje jako sloupec data.
  • Sloupec data musí obsahovat jedinečné hodnoty.
  • Sloupec data nesmí obsahovat prázdné hodnoty.
  • Ve sloupci data nesmí chybět žádná kalendářní data.
  • Sloupec data musí zahrnovat celé roky. Rok nemusí nutně odpovídat kalendářnímu roku (leden–prosinec).
  • Tabulka kalendářních dat musí být označena jako tabulka kalendářních dat.

Další informace najdete v tématu Vytváření tabulek kalendářních dat v Power BI Desktopu.

Souhrny v průběhu času

Souhrny v čase se zabývá jedna skupina funkcí časového měřítka DAX:

  • DATESYTD – Vrátí tabulku s jedním sloupcem, která obsahuje kalendářní data od začátku roku (YTD) v aktuálním kontextu filtru. Tato skupina obsahuje také funkce jazyka DATESMTD DAX a DATESQTD pro od začátku měsíce (MTD) a od začátku čtvrtletí (QTD). Tyto funkce můžete předat jako filtry do CALCULATE funkce DAX.
  • TOTALYTD – Vyhodnotí výraz pro YTD v aktuálním kontextu filtru. K dispozici jsou také ekvivalentní funkce jazyka DAX QTD a MTD pro TOTALQTD a TOTALMTD .
  • DATESBETWEEN – Vrátí tabulku obsahující sloupec kalendářních dat, která začínají daným počátečním datem a pokračují až do daného koncového data.
  • DATESINPERIOD – Vrátí tabulku obsahující sloupec kalendářních dat, která začínají daným počátečním datem a pokračují po zadaný počet intervalů.

Poznámka

I když je TOTALYTD použití funkce jednoduché, můžete se omezit na předání jednoho výrazu filtru. Pokud potřebujete použít více výrazů filtru, použijte CALCULATE funkci a pak funkci předejte DATESYTD jako jeden z výrazů filtru.

V následujícím příkladu vytvoříte svůj první výpočet časového měřítka, který použije funkci TOTALYTD. Syntaxe je následující:

TOTALYTD(<expression>, <dates>, [, <filter>][, <year_end_date>])

Funkce vyžaduje výraz, a stejně jako u všech funkcí časového měřítka, potřebuje také odkaz na sloupec data v označené tabulce kalendářních dat. Volitelně je možné předat jeden výraz filtru nebo datum konce roku (nutné pouze v případě, že rok nekončí 31. prosince).

Stáhněte si a otevřete soubor Adventure Works DW 2020 M07.pbix. Pak do tabulky Sales (Prodej ) přidejte následující definici míry, která vypočítá výnosy od roku YTD. Naformátujte míru jako měnu se dvěma desetinnými místy.

Revenue YTD =
TOTALYTD([Revenue], 'Date'[Date], "6-30")

Hodnota koncového "6-30" data roku představuje 30. června.

Na straně 1 sestavy přidejte do maticového vizuálu míru Revenue YTD (Tržby od začátku roku). Všimněte si, že vytvoří souhrn tržeb od začátku roku až po filtrovaný měsíc.

Obrázek znázorňuje maticový vizuál se seskupením podle roku a měsíce na řádcích a se souhrny tržeb a tržeb od začátku roku (YTD). Hodnoty od začátku roku (YTD) jsou zvýrazněné.

Porovnání v průběhu času

Jiná skupina funkcí časového měřítka DAX se zabývá posuny časových období:

  • DATEADD – Vrátí tabulku obsahující sloupec kalendářních dat posunutých dopředu nebo dozadu v čase o zadaný počet intervalů od kalendářních dat v aktuálním kontextu filtru.
  • PARALLELPERIOD – Vrátí tabulku, která obsahuje sloupec kalendářních dat představující období, které je paralelní k kalendářním datům v zadaném sloupci dates v aktuálním kontextu filtru, s kalendářními daty posunutými o několik intervalů dopředu nebo dozadu v čase.
  • SAMEPERIODLASTYEAR – Vrátí tabulku obsahující sloupec kalendářních dat, která jsou posunuta o jeden rok zpět od kalendářních dat v zadaném sloupci dates v aktuálním kontextu filtru.
  • Existuje spousta pomocných funkcí DAX pro posun konkrétních časových období zpět nebo dopředu, které vrací tabulku kalendářních dat. Mezi tyto pomocné funkce patří NEXTDAY, , NEXTQUARTERNEXTMONTH, NEXTYEARa PREVIOUSDAY, PREVIOUSMONTH, PREVIOUSQUARTER, a PREVIOUSYEAR.

Teď přidáte do tabulky Sales míru, která pomocí SAMEPERIODLASTYEAR funkce vypočítá výnosy za předchozí rok. Naformátujte míru jako měnu se dvěma desetinnými místy.

Revenue PY =
VAR RevenuePriorYear = CALCULATE([Revenue], SAMEPERIODLASTYEAR('Date'[Date]))
RETURN
    RevenuePriorYear

Přidejte do maticového vizuálu míru Revenue PY (Tržby za předchozí rok). Všimněte si, že vzniklé výsledky jsou stejné jako částky tržeb z předchozího roku.

Obrázek znázorňuje maticový vizuál se seskupením podle roku a měsíce na řádcích a se souhrny tržeb, tržeb od začátku roku (YTD) a tržeb za předchozí rok (PY). Hodnoty měsíčních tržeb za předchozí rok pro FY2019 se rovnají hodnotám měsíčních tržeb za FY2018.

Dále míru upravíte tak, že ji přejmenujete na Revenue YoY % (Meziroční výnosy) a pak aktualizujete klauzuli RETURN pro výpočet poměru změn. Nezapomeňte změnit formát na procento se dvěma desetinnými místy.

Revenue YoY % =
VAR RevenuePriorYear = CALCULATE([Revenue], SAMEPERIODLASTYEAR('Date'[Date]))
RETURN
    DIVIDE(
        [Revenue] - RevenuePriorYear,
        RevenuePriorYear
    )

Všimněte si, že míra Revenue YoY % (Meziroční % růstu tržeb) vytváří procentuální faktor změny vzhledem měsíčním tržbám z předchozího roku. Například July 2018 (Červenec 2018) představuje 106,53% nárůst měsíčních tržeb oproti předchozímu roku a November 2018 (Listopad 2018) představuje 24,22% pokles měsíčních tržeb oproti předchozímu roku.

Obrázek znázorňuje maticový vizuál se seskupením podle roku a měsíce na řádcích a se souhrny tržeb, tržeb od začátku roku a meziroční % růstu tržeb. Hodnoty meziročního procenta růstu tržeb v roce FY2019 jsou naformátované jako procenta.

Poznámka

Míra Revenue YoY % (Meziroční % růstu tržeb) je příkladem efektivního využití proměnných DAX. Tato míra zlepšuje čitelnost vzorce a umožňuje otestovat části logiky dané míry (vrácením hodnoty proměnné RevenuePriorYear). Tato míra je navíc optimálním vzorcem, protože nemusí dvakrát načítat hodnotu tržeb z předchozího roku. Když ho jednou uložíte do proměnné, RETURN použije klauzule hodnotu proměnné dvakrát.