Používanie základov jazyka DAX v aplikácii Power BI Desktop

Tento článok je určený novým používateľom aplikácie Power BI Desktop. Poskytne vám jednoduchý a rýchly úvod o tom, ako používať jazyk DAX (Data Analysis Expressions) na riešenie viacerých základných problémov s výpočtami a analýzou údajov. Prejdeme si niekoľko konceptových informácií, rad úloh, ktoré môžete dokončiť a kontrolu znalostí, kde si otestujte, čo ste sa naučili. Po dokončení tohto článku by ste mali rozumieť najdôležitejším základným konceptom v jazyku DAX.

Čo je DAX?

DAX je kolekcia funkcií, operátorov a konštánt, ktoré možno použiť vo vzorci, alebo výraz, ktorý umožňuje vypočítať a vrátiť niekoľko hodnôt. Jednoducho povedané, DAX umožňuje vytvárať nové informácie z údajov, ktoré sa už v modeli nachádzajú.

Prečo je jazyk DAX taký dôležitý?

Je celkom jednoduché vytvoriť nový súbor Power BI Desktop a importovať do neho údaje. Môžete dokonca vytvárať zostavy, ktoré zobrazujú cenné informácie, úplne bez použitia vzorcov DAX. Ale čo ak potrebujete analyzovať percento rastu v rámci kategórií produktov a pre rôzne rozsahy dátumov? Alebo potrebujete vypočítať medziročný rast v porovnaní s trhovými trendami? Vzorce DAX poskytujú túto možnosť, ako aj mnohé iné dôležité funkcie. Ak sa naučíte, ako vytvárať efektívne vzorce DAX, budete môcť naplno využívať svoje údaje. Keď získate potrebné informácie, môžete začať riešiť skutočné obchodné problémy, ktoré ovplyvňujú vašu spodnú hranicu. Práve v tom spočíva sila Power BI a DAX vám pomôže ju ovládnuť.

Požiadavky

Možno už viete, ako sa vytvárajú vzorce v programe Microsoft Excel. Tieto znalosti vám pomôžu pochopiť jazyk DAX. Avšak aj v prípade, že so vzorcami v Exceli nemáte žiadne skúsenosti, pojmy popísané v tomto článku vám pomôžu začať vytvárať vzorce DAX a bezprostredne riešiť reálne problémy BI.

Zameriame sa na to, aby sme pochopili vzorce jazyka DAX využívané vo výpočtoch, presnejšie v mierkach a vypočítaných stĺpcoch. Už by ste mali byť oboznámení s používaním aplikácie Power BI Desktop na importovanie údajov a pridávanie polí do zostavy, a tiež by ste mali poznať základné pojmy mierky a vypočítané stĺpce.

Príklad vzorového zošita

Najlepší spôsob, ako sa naučiť jazyk DAX, je vytvoriť niektoré základné vzorce, použiť ich so skutočnými údajmi a zobraziť si výsledky. V príkladoch a úlohách v tomto článku je použitý súbor Contoso Sales Sample for Power BI Desktop. Tento vzorový súbor je rovnaký ako súbor použitý v tutoriále: Vytvorte si vlastné miery v Power BI Desktop článku.

Poďme na to!

Naše chápanie jazyka DAX budeme zarámujte okolo troch základných konceptov: Syntax, Funkcie a Kontext. V jazyku DAX existujú aj ďalšie dôležité pojmy, ale pochopenie týchto troch pojmov nám poskytne najlepší základ na vybudovanie zručností v jazyku DAX.

Syntax

Než začnete vytvárať vlastné vzorce, pozrime sa na syntax vzorca DAX. Syntax zahŕňa rôzne prvky, z ktorých sa vzorec skladá, alebo zjednodušene, ako je vzorec napísaný. Toto je napríklad jednoduchý vzorec DAX pre mierku:

Syntax vzorca v jazyku DAX

Tento vzorec obsahuje tieto prvky syntaxe:

A. Názov mierky Celkový predaj.

B. Operátor znamienko rovná sa = ( ), ktorý označuje začiatok vzorca. Po výpočte vráti výsledok.

C. Funkcia DAX SUM, ktorá sčíta všetky čísla v stĺpci Predaj [ObjemPredaja]. Viac o týchto funkciách sa dozviete neskôr.

D. Zátvorky (), ktoré ohraničujú výraz obsahujúci jeden alebo viac argumentov. Väčšina funkcií vyžaduje aspoň jeden argument. Argument prenáša hodnotu do funkcie.

E. Odkazovaná tabuľka Predaj.

F. Odkazovaný stĺpec [ObjemPredaja] v tabuľke Predaj. Pomocou tohto argumentu vie funkcia SUM, v ktorom stĺpci agregovať súčet.

Ak sa snažíme pochopiť vzorec DAX, je často užitočné zanalyzovať každý z týchto prvkov v jazyku, v ktorom premýšľate a rozprávate každý deň. Tento vzorec napríklad môžete čítať takto:

Pre mierku s názvom Celkový predaj, vypočíta (=) súčet hodnôt v stĺpci [ObjemPredaja] v tabuľke Predaj.

Ak túto mierku pridáme do zostavy, vypočíta a vráti hodnoty sčítaním objemov predaja pre všetky ostatné zahrnuté polia, napríklad Mobilné telefóny v USA.

Možno si pomyslíte „Nerobí táto mierka to isté, ako keby som len do zostavy pridal pole ObjemPredaja?“ V podstate áno. Existuje však dobrý dôvod na vytvorenie našej vlastnej mierky, ktorá sčíta hodnoty z poľa ObjemPredaja: môžeme ju použiť ako argument v iných vzorcoch. Táto informácia môže teraz pôsobiť trochu mätúco, ale keď sa zdokonalíte v zručnostiach týkajúcich sa vzorcov DAX, umožní vám znalosť tejto mierky vytvárať efektívnejšie vzorce a modely. Mierka Celkový predaj sa v podstate neskôr zobrazí ako argument v iných vzorcoch.

Povedzme si o tomto vzorci ešte niekoľko vecí. Predovšetkým sme zaviedli novú funkciu, SUM. Funkcie sú vopred napísané vzorce, ktoré uľahčujú zložité výpočty a manipulácie s číslami, dátumami, časom, textom a ďalšími prvkami. Viac o funkciách sa dozviete neskôr.

Vidíte tiež, že názvu stĺpca [ObjemPredaja] predchádza tabuľka Predaj, do ktorej stĺpec patrí. Tento názov sa považuje za plne kvalifikovaný názov stĺpca, keďže obsahuje názov stĺpca, ktorému predchádza názov tabuľky. Stĺpce, na ktoré sa odkazuje v tej istej tabuľke, nevyžadujú, aby sa názov tabuľky zahrnul do vzorca. Tým sa môžu dlhé vzorce, ktoré odkazujú na mnohé stĺpce, skrátiť a urobiť sa jednoduchšie na čítanie. Je však vhodné zahrnúť názov tabuľky do vzorcov mierky, aj keď sú v tej istej tabuľke.

Poznámka

Ak názov tabuľky obsahuje medzery, vyhradené kľúčové slová alebo nepovolené znaky, musíte názov tabuľky uviesť v jednoduchých úvodzovkách. Názvy tabuliek je potrebné uviesť v úvodzovkách aj vtedy, ak tieto obsahujú znaky mimo rozsahu alfanumerických znakov ANSI, bez ohľadu na to, či vaše miestne nastavenie túto tabuľku znakov podporuje alebo nie.

Je dôležité, aby vaše vzorce mali správnu syntax. Vo väčšine prípadov, ak nie je syntax správna, vráti sa syntaktická chyba. V iných prípadoch môže byť syntax správna, ale vrátené hodnoty sa nemusia zhodovať s vašimi očakávaniami. DAX editor v aplikácii Power BI Desktop obsahuje funkciu návrhov, ktorá slúži na vytvorenie syntakticky správnych vzorcov tým, že pomáha vybrať správne prvky.

Poďme vytvoriť jednoduchý vzorec. Vďaka tejto úlohe lepšie porozumiete syntaxi vzorca a tomu, ako vám môže pomôcť funkcia návrhov vo vzorcovom paneli.

Úloha: Vytvoriť vzorec mierky

  1. Stiahnite si a otvorte ukážkový súbor Predaja Contoso služby Power BI Desktop.

  2. V zobrazení zostavy v zozname polí kliknite pravým tlačidlom myši na tabuľku Predaj, a potom vyberte položku Nová mierka.

  3. Vo vzorcovom paneli nahraďte výraz Mierka tak, že zadáte nový názov mierky, Predaj za predchádzajúci štvrťrok.

  4. Po znamienku rovná sa zadajte niekoľko prvých písmen CAL a potom dvakrát kliknite na funkciu, ktorú chcete použiť. V tomto vzorci chcete použiť funkciu CALCULATE.

    Funkcia CALCULATE sa použije na filtrovanie súm, ktoré chceme spočítať pomocou argumentu preneseného do funkcie CALCULATE. Toto sa nazýva vnorené funkcie. Funkcia CALCULATE má najmenej dva argumenty. Prvým z nich je výraz, ktorý sa má vyhodnotiť, a druhým je filter.

  5. Za ľavou zátvorkou ( pre funkciu CALCULATE zadajte položku SUM a potom ďalšiu ľavú zátvorku (.

    V ďalšom kroku odovzdáme argument funkcii SUM.

  6. Začnite písať písmená Pre a potom vyberte položku Predaj [Objempredaja] a následne pridajte pravú zátvorku ).

    Ide o prvý argument pre výraz pre našu funkciu CALCULATE.

  7. Ak chcete zadať prvý filter, zadajte čiarku (,), za ktorou bude nasledovať medzera. Následne zadajte výraz PREVIOUSQUARTER.

    Funkcia časovej inteligencie PREVIOUSQUARTER sa použije na filtrovanie výsledkov funkcie SUM pre predchádzajúci štvrťrok.

  8. Po ľavej zátvorke ( pre funkciu PREVIOUSQUARTER zadajte položku Kalendár[KľúčPreDátum].

    Funkcia PREVIOUSQUARTER má jeden argument, stĺpec obsahujúci súvislý rozsah dátumov. V našom prípade to je stĺpec KľúčPreDátum v tabuľke Kalendár.

  9. Zavrite obidva argumenty prenesené do funkcie PREVIOUSQUARTER a funkcie CALCULATE zadaním dvoch pravých zátvoriek )).

    Vzorec by mal teraz vyzerať takto:

    Predaj za predchádzajúci štvrťrok = CALCULATE(SUM(Predaj[ObjemPredaja]), PREVIOUSQUARTER(Kalendár[KľúčPreDátum]))

  10. Vyberte znak začiarknutia Ikona v tvare značky začiarknutia vo vzorcovom paneli alebo stlačením klávesu Enter overte vzorec a pridajte ho do modelu.

Zvládli ste to! Práve ste vytvorili komplexnú mierku pomocou jazyka DAX, a to nie úplne jednoduchú. Tento vzorec bude vypočítavať celkový predaj za predchádzajúci štvrťrok, v závislosti od filtrov použitých v zostave. Ak napríklad zadáme ObjemPredaja a našu novú mierku Predaj za predchádzajúci štvrťrok do grafu a potom pridáme Rok a Štvrťrok ako rýchle filtre, získame asi takýto výsledok:

Graf Predaj za predchádzajúci štvrťrok a ObjemPredaja

Práve ste sa oboznámili s niekoľkými dôležitými aspektami vzorcov jazyka DAX:

  • Tento vzorec obsahoval dve funkcie. Funkcia časovej inteligencie PREVIOUSQUARTER je vnorená ako argument prenesený do filtrovacej funkcie CALCULATE.

    Vzorce DAX môžu obsahovať až 64 vnorených funkcií. Je nepravdepodobné, že by vzorec niekedy obsahoval také množstvo vnorených funkcií. V skutočnosti by bolo ťažké takýto vzorec vytvoriť a doladiť, a pravdepodobne by bol dosť pomalý.

  • V tomto vzorci sa použili aj filtre. Filtre zužujú obsah výpočtu. V tomto prípade ste vybrali jeden filter ako argument, ktorý je vlastne výsledkom ďalšej funkcie. Viac o filtroch sa dozviete neskôr.

  • Použili ste funkciu CALCULATE. Toto je jedna z najúčinnejších funkcií jazyka DAX. Pri vytváraní modelov a zložitejších vzorcov pravdepodobne túto funkciu využijete mnohokrát. Hoci do obsahu tohto článku nespadá podrobnejší popis funkcie CALCULATE, s tým, ako sa budú vaše svoje vedomosti o jazyku DAX rozširovať, venujte tejto funkcii zvláštnu pozornosť.

Rýchly kvíz o syntaxe

  1. Na čo slúži toto tlačidlo na vzorcovom paneli?

    Výber tlačidla

  2. Čo vždy ohraničuje názov stĺpca vo vzorci DAX?

Odpovede nájdete na konci tohto článku.

Funkcie

Funkcie sú preddefinované vzorce, ktoré vykonávajú výpočty pomocou konkrétnych hodnôt, nazývaných argumenty, v určitom poradí alebo štruktúre. Argumentmi môžu byť iné funkcie, iný vzorec, výraz, odkazy na stĺpce, čísla, text, logické hodnoty, napríklad TRUE alebo FALSE, alebo konštanty.

DAX obsahuje tieto kategórie funkcií: dátum a čas, časová inteligencia, informácie, logická, matematická, štatistická, textová, nadradené/podradená a iné funkcie. Ak poznáte funkcie vzorcov v Exceli, mnohé funkcie v jazyku DAX sa vám budú zdať podobné; funkcie DAX sú však jedinečné v týchto smeroch:

  • Funkcia DAX vždy odkazuje na kompletný stĺpec alebo tabuľku. Ak chcete z tabuľky alebo stĺpca použiť len konkrétne hodnoty, môžete do vzorca pridať filtre.

  • Ak chcete prispôsobiť výpočty po riadkoch, DAX obsahuje funkcie, ktoré umožňujú použiť aktuálnu hodnotu riadka alebo súvisiacu hodnotu ako druh argumentov na výpočty, ktoré sa líšia kontextom. O kontexte si povieme viac neskôr.

  • DAX obsahuje mnohé funkcie, ktorých výsledkom nebýva hodnota, ale tabuľka. Tabuľka sa nezobrazuje, ale slúži na zadanie vstupov pre ďalšie funkcie. Môžete napríklad načítať tabuľku a potom spočítať jednotlivé hodnoty v nej, alebo vypočítať dynamické súčty pre filtrované tabuľky alebo stĺpce.

  • DAX obsahuje rôzne funkcie časovej inteligencie. Tieto funkcie umožňujú definovať alebo vybrať rozsahy dátumov a vykonávať na ich základe dynamické výpočty. Môžete napríklad porovnať súčty pre paralelné obdobia.

  • Excel má obľúbenú funkciu VLOOKUP. Narozdiel od funkcie VLOOKUP v Exceli, funkcie DAX neodkazujú na bunku alebo rozsah buniek. Funkcie DAX odkazujú na stĺpec alebo tabuľku. Pamätajte, že v aplikácii Power BI Desktop pracujete s modelom relačných údajov. Vyhľadávanie hodnôt v inej tabuľke je jednoduché a vo väčšine prípadov nie je potrebné vytvoriť žiadny vzorec.

    Ako vidíte, funkcie v jazyku DAX umožňujú vytvárať výkonné vzorce. Tu sme sa len zbežne pozreli na základné informácie o funkciách. S rozširujúcimi sa zručnosťami budete v jazyku DAX vytvárať vzorce pomocou mnohých rôznych funkcií. Jedným z najlepších zdrojov podrobných informácií o každej z funkcií DAX, sú odkazy na funkcie DAX.

Rýchly kvíz o funkciách

  1. Na čo funkcie vždy odkazujú?
  2. Môže vzorec obsahovať viac ako jednu funkciu?
  3. Akú kategóriu funkcií by ste použili na zreťazenie dvoch textových reťazcov do jedného reťazca?

Odpovede nájdete na konci tohto článku.

Context

Kontext je jedným z najdôležitejších konceptov, ak chcete porozumieť jazyku DAX. V jazyku DAX existujú dva typy kontextu: kontext riadka a kontext filtra. Najprv sa pozrieme na kontext riadka.

Kontext riadka

Kontext riadka si môžeme najjednoduchšie predstaviť ako aktuálny riadok. Použije sa vždy, keď vzorec obsahuje funkciu, ktorá používa filtre na identifikáciu jedného riadka v tabuľke. Táto funkcia vo svojej podstate použije kontext riadka pre každý riadok tabuľky, pre ktorú sa filter používa. Tento typ kontextu pre riadky sa najčastejšie používa pre mierky.

Kontext filtra

Kontext filtra je trochu zložitejší na pochopenie ako kontext riadka. Kontext filtra si najjednoduchšie môžete predstaviť ako filtre použité vo výpočte, ktorý určuje výsledok alebo hodnotu.

Kontext filtra neexistuje ako náhrada kontextu riadka; používa sa skôr ako jeho doplnok. Ak chcete napríklad viac zúžiť hodnoty, ktoré sa zahrnú do výpočtu, môžete použiť kontext filtra, ktorý okrem kontextu riadka tiež vymedzuje určitú hodnotu (filter) v tomto kontexte riadka.

Kontext filtra často nájdete v zostavách. Ak napríklad do vizualizácie pridáte kontext CelkovéNáklady, a potom pridáte Rok a Oblasť, definujete kontext filtra, ktorý vyberie podmnožinu údajov na základe daného roka a oblasti.

Prečo je kontext filtra pre jazyk DAX taký dôležitý? Pretože hoci kontext filtra sa najľahšie používa tak, že pridáte polia do vizualizácie, je tiež možné ho použiť vo vzorci DAX tak, že definujete filter pomocou funkcií ako ALL, RELATED, FILTER, CALCULATE, pomocou vzťahov alebo iných mierok a stĺpcov. Pozrime sa napríklad na tento vzorec v mierke s názvom Výnosy obchodu:

Mierka Výnosy obchodu

Podobne ako pri iných vzorcoch, môžeme si tento vzorec rozdeliť, aby sme mu lepšie porozumeli.

Tento vzorec obsahuje tieto prvky syntaxe:

A. Názov mierky Výnosy obchodu.

B. Operátor znamienko rovná sa = ( ), ktorý označuje začiatok vzorca.

C. Funkcia CALCULATE, ktorá vyhodnotí výraz ako argument v kontexte modifikovanom podľa zadaných filtrov.

D. Zátvorky (), ktoré ohraničujú výraz obsahujúci jeden alebo viac argumentov.

E. Mierka [Celkový predaj] v tej istej tabuľke ako výraz. Mierka Celkový predaj má vzorec: = SUM(Predaj[ObjemPredaja]).

F. Čiarka (,), ktorá oddeľuje prvý argument výrazu od argumentu filtra.

G. Plne kvalifikovaný odkazovaný stĺpec, Kanál [NázovKanála]. Toto je náš kontext riadka. Každý riadok v tomto stĺpci určuje kanál, ako napríklad obchod alebo online.

H. Konkrétna hodnota, Obchod, ako filter. Toto je náš kontext filtra.

Na základe tohto vzorca sa vypočítajú iba hodnoty predaja definované mierkou Celkový predaj, a to len pre riadky v stĺpci Kanál [NázovKanála] s hodnotou Obchod, ktorá je použitá ako filter.

Asi si viete predstaviť, že možnosť definovať kontext filtra vo vzorci vám poskytuje obrovské množstvo účinných možností. Možnosť odkazovať len na konkrétnu hodnotu v súvisiacej tabuľke je len jedným z príkladov. Ak ste princíp kontextu úplne nepochopili na prvýkrát, nemajte obavy. Pri vytváraní vlastných vzorcov lepšie porozumiete kontextu aj jeho významu v jazyku DAX.

Rýchly kvíz o kontexte

  1. Aké sú dva typy kontextu?
  2. Čo je kontext filtra?
  3. Čo je kontext riadka?

Odpovede nájdete na konci tohto článku.

Súhrn

Teraz, keď ste sa oboznámili s najdôležitejšími pojmami v jazyku DAX, môžete sami začať vytvárať vzorce DAX pre mierky. Naučiť sa pracovať s jazykom DAX môže byť trocha náročnejšie, k dispozícii však máte množstvo zdrojov. Keď dočítate tento článok a vyskúšate si niekoľko vlastných vzorcov, môžete si pozrieť ďalšie informácie o iných pojmoch a vzorcoch DAX, ktoré vám môžu pomôcť riešiť vaše obchodné problémy. K dispozícii máte množstvo zdrojov pre jazyk DAX; najdôležitejší je odkaz Data Analysis Expressions (DAX).

Keďže jazyk DAX existuje už niekoľko rokov v iných nástrojoch BI od spoločnosti Microsoft, napríklad Power Pivot a modely Analysis Services v tabuľkovom režime, existuje veľa užitočných informácií. Ďalšie informácie nájdete v knihách, štúdiách a blogoch od spoločnosti Microsoft, ako aj popredných odborníkov z oblasti BI. Skvelým zdrojom na úvod je tiežDAX Resource Center Wiki na lokalite TechNet.

Odpovede na rýchly kvíz

Syntax:

  1. Overuje a zadáva mierku do modelu.
  2. Zátvorky [].

Funkcie:

  1. Na tabuľku a stĺpec.
  2. Áno. Vzorec môže obsahovať až 64 vnorených funkcií.
  3. Textové funkcie.

Kontext:

  1. Kontext riadka a kontext filtra.
  2. Filtre vo výpočte, ktoré určujú jednu hodnotu.
  3. Aktuálny riadok.