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. Mnoho z těchto vzorců inteligence můžete napsat pomocí CALCULATE funkce, která upravuje filtry kalendářních dat, ale která by vytvořila 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 pro rok k datu (YTD) v kontextu aktuálního filtru. Tato skupina obsahuje DATESMTD také funkce a DATESQTD DAX pro od začátku měsíce (MTD) a QTD (čtvrtletí od data data). Tyto funkce můžete předat jako filtry do funkce jazyka CALCULATE DAX.
  • TOTALYTD – Vyhodnotí výraz pro YTD v aktuálním kontextu filtru. Zahrnuté 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číná daným počátečním datem a pokračuje až do daného koncového data.
  • DATESINPERIOD - Vrátí tabulku obsahující sloupec kalendářních dat, který začíná daným počátečním datem a pokračuje po zadaný počet intervalů.

Poznámka

TOTALYTD I když je použití funkce jednoduché, je omezené 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. Potom do tabulky Sales (Prodej ) přidejte následující definici míry, která vypočítá výnosy 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.

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 v čase dopředu nebo dozadu 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, který představuje období, které je rovnoběžné s kalendářními daty v zadaném sloupci kalendářních dat v aktuálním kontextu filtru s kalendářními daty posunutými o několik intervalů v čase dopředu nebo zpět 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 kalendářních dat 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, NEXTMONTH, NEXTQUARTERNEXTYEAR, a 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.

Dále upravíte míru tak, že ji přejmenujete na Revenue YoY % 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.

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. Po uložení jednou do proměnné RETURN se klauzule použije na hodnotu proměnné dvakrát.