Psaní vzorců jazyka DAX

Dokončeno

Každý typ modelu výpočtu, počítaná tabulka, počítaný sloupec nebo míra jsou definovány svým názvem, po kterém následuje symbol rovná se (=), po kterém následuje vzorec jazyka DAX. Model výpočtu vytvoříte pomocí následující šablony:

<Calculation name> = <DAX formula>

Například definice počítané tabulky Datum expedice , která duplikuje data tabulky Date , je:

Ship Date = 'Date'

Vzorec DAX se skládá z výrazů, které vracejí výsledek. Výsledkem je buď objekt tabulky, nebo skalární hodnota. Vzorce počítané tabulky musí vrátit objekt tabulky; Vzorce počítaných sloupců a měr musí vracet skalární hodnotu (jednu hodnotu).

Pro sestavení vzorce se používají:

  • funkce jazyka DAX,
  • operátory jazyka DAX,
  • odkazy na objekty modelu,
  • Konstantní hodnoty, jako je číslo 24 nebo literálový text "FY" (zkratka pro fiskální rok)
  • proměnné jazyka DAX,
  • prázdné znaky.

Tip

Při zadávání vzorců DAX v Power BI Desktop máte výhodu technologie IntelliSense. IntelliSense pomáhá dokončovat kódy tím, že nabízí seznam funkcí a prostředků modelu. Když vyberete funkci DAX, zobrazí se vám také definice a popis. Doporučujeme používat technologii IntelliSense, protože díky ní můžete rychleji vytvářet přesné vzorce.

Funkce jazyka DAX

Podobně jako v Microsoft Excelu je JAZYK DAX funkčním jazykem, což znamená, že vzorce při plnění konkrétních cílů spoléhají na funkce. Funkce jazyka DAX mají obvykle argumenty, které umožňují předávání proměnných. Vzorce mohou používat mnoho volání funkcí a budou často vnořovat funkce do jiných funkcí.

Po názvu funkce musí ve vzorci následovat závorky. Do závorek se předávají proměnné.

Poznámka

Některé funkce nepracují s argumenty, případně argumenty mohou být volitelné.

Práce s funkcemi jazyka DAX je popsána dále v tomto modulu.

Operátory jazyka DAX

Vzorce také spoléhají na operátory, které můžou provádět aritmetické výpočty, porovnávat hodnoty, pracovat s řetězci nebo testovat podmínky.

Operátory jazyka DAX jsou podrobněji popsány dále v tomto modulu.

Odkazy na objekty modelu

Vzorce mohou odkazovat pouze na tři typy objektů modelu: tabulky, sloupce nebo míry. Vzorec nemůže odkazovat na hierarchii ani na úroveň hierarchie. (Připomínáme, že úroveň hierarchie je odvozena na základě sloupce, takže vzorec může odkazovat na sloupec úrovně hierarchie.)

Odkaz na tabulku

Když odkazujete na tabulku ve vzorci, oficiálně se název tabulky uzavře do jednoduchých uvozovek. V následující definici počítané tabulky si všimněte, že tabulka Date je uzavřená v jednoduchých uvozovkách.

Ship Date = 'Date'

Jednoduché uvozovky ale lze vynechat, pokud jsou splněny obě následující podmínky:

  1. Název tabulky neobsahuje vložené mezery.
  2. Název tabulky není vyhrazené slovo používané jazykem DAX. Všechny operátory a názvy funkcí jazyka DAX jsou vyhrazenými slovy. Date je název funkce DAX, který vysvětluje, proč když odkazujete na tabulku s názvem Date, musíte ji uzavřít do jednoduchých uvozovek.

V následující definici počítané tabulky je možné při odkazování na tabulku Airport vynechat jednoduché uvozovky:

Arrival Airport = Airport

Odkazy na sloupce

Když ve vzorci odkazujete na sloupec, musí být název sloupce uzavřený v hranatých závorkách. Pokud chcete, můžete před něj uvést název tabulky, ve které je obsažený. Například následující definice míry odkazuje na sloupec Sales Amount (Částka prodeje).

Revenue = SUM([Sales Amount])

Vzhledem k tomu, že názvy sloupců jsou jedinečné v rámci tabulky, ale nemusí být nutně jedinečné v modelu, můžete odkaz na sloupec upřesnit pomocí názvu tabulky. Tento upřesněný sloupec se nazývá plně kvalifikovaný odkaz na sloupec. Některé funkce DAX vyžadují předání plně kvalifikovaných odkazů na sloupec.

Tip

Aby byly vaše vzorce čitelnější, doporučujeme, abyste před odkazem na sloupec vždy uvedli název tabulky, jejíž je součástí.

Předchozí ukázkovou definici míry lze přepsat takto:

Revenue = SUM(Sales[Sales Amount])

Odkazy na míry

Když odkazujete na míru ve vzorci, jako jsou odkazy na název sloupce, musí být název míry uzavřený v hranatých závorkách. Například následující definice míry odkazuje na míry Revenue (Výnosy) a Cost (Náklady).

Profit = [Revenue] - [Cost]

Pokud jste začátečník jazyka DAX, může být při čtení vzorce matoucí skutečnost, že odkazy na sloupce a míry jsou vždy uzavřené v hranatých závorkách. Jakmile se ale naučíte základy jazyka DAX, budete moct určit, o jaký typ objektu se jedná, protože ve vzorcích DAX se sloupce a míry používají různými způsoby.

Tip

Před odkazem na míru je možné uvést název tabulky, jejíž je součástí. Míry ale představují objekt na úrovni modelu. I když jsou přiřazeny k domovské tabulce, jedná se pouze o kosmetickou relaci, která umožnuje logicky uspořádat míry v podokně Pole.

Přestože doporučujeme, abyste před odkazem na sloupec vždy uvedli název tabulky, jejíž je součástí, pro míry navrhujeme opačný postup, tedy abyste před odkazem na míru nikdy neuváděli název tabulky, jejíž je součástí.

Další informace najdete v tématu Odkazy na sloupce a míry.

Proměnné jazyka DAX

Vzorce mohou deklarovat proměnné jazyka DAX pro ukládání výsledků.

Jak a kdy používat proměnné DAX je popsáno dále v tomto modulu.

Prázdné znaky

Prázdné znaky představují rychlou a snadno srozumitelnou možnost pro formátování vzorců. Mezi prázdné znaky patří:

  • Mezery
  • Tabulátory
  • Znaky konce řádku

Prázdný znak je nepovinný a nemění logiku vzorce ani nemá negativní vliv na výkon. Důrazně doporučujeme, abyste si osvojili určitý styl formátování a důsledně ho dodržovali. Také zvažte následující tipy:

  • Používejte mezery mezi operátory.
  • Pomocí tabulátorů odsazujte volání vnořených funkcí.
  • Pomocí znaku konce řádku oddělujte argumenty funkce, zejména v případě, že jsou příliš dlouhé a nevejdou se na jeden řádek. Tento styl formátování usnadňuje řešení problémů, a to především v případě, že ve vzorci chybí kulatá závorka.
  • Větší počet mezer ve vzorci nevadí, naopak jejich nedostatek může způsobit potíže.

Tip

Do řádku vzorců zadáte návratový řádek stisknutím kláves Shift+Enter. Stisknutím samotné klávesy Enter vzorec potvrdíte.

Podívejte se na následující definici míry, která je napsaná na jednom řádku a zahrnuje volání pěti funkcí DAX:

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

V následujícím příkladu je použita stejná definice míry, ale tentokrát naformátovaná, takže se lépe čte a je srozumitelnější.

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

Vyzkoušejte si formátování míry. Otevřete soubor adventure Works DW 2020 M02.pbix Power BI Desktop a pak v podokně Pole rozbalte tabulku Sales (Prodej) a vyberte míru Revenue YoY % (Výnosy yoY %. V řádku vzorců použijte návratové znaky tabulátoru a řádku, abyste vytvořili stejný výsledek jako v předchozím příkladu. Když přidáte návratový znak, nezapomeňte stisknout Kombinaci kláves Shift+Enter.

Tuto definici míry je možné dále vylepšit z hlediska čitelnosti a výkonu, což bude vysvětleno později v tomto modulu.

Tip

Skvělým nástrojem pro formátování z jiného zdroje, který vám pomůže formátovat výpočty, je DAX Formatter. Tento nástroj umožňuje vložit výpočet a naformátovat ho. Potom můžete formátovaný výpočet zkopírovat do schránky a vložit ho zpět do Power BI Desktop.