Naučte sa základy jazyka DAX v aplikácii Power BI Desktop

Používatelia, ktorí sú novým používateľom aplikácie Power BI Desktop, môžu tento článok použiť ako rýchly a jednoduchý úvod o tom, ako používať jazyk DAX (Data Analysis Expressions) na riešenie mnohých základných výpočtov a problémov s analýzou údajov. Prejdeme si niekoľko konceptových informácií, rad úloh, ktoré môžete dokončiť a kontrolu vedomostí, 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áv, ktoré možno použiť vo vzorci alebo výraze na výpočet a vrátenie jednej alebo viacerých hodnôt. DAX umožňuje vytvárať nové informácie z údajov, ktoré už sú vo vašom modeli.

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

Je jednoduché vytvoriť nový súbor Power BI Desktop a importovať do neho údaje. Môžete dokonca vytvárať zostavy, ktoré zobrazujú cenné prehľady, bez použitia vzorcov DAX. Čo však v prípade, 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ť a mnoho ďalších dôležitých funkcií. Vzdelávanie o vytváraní efektívnych vzorcov DAX vám pomôže naplno vykoná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.

Požiadavky

Možno už viete, ako sa vytvárajú vzorce v programe Microsoft Excel, a tieto znalosti vám pomôžu pochopiť jazyk DAX. Ak však s excelovými vzorcami nemáte žiadne skúsenosti, pojmy popísané v tomto článku vám pomôžu začať vytvárať vzorce DAX a okamžite riešiť reálne problémy BI.

Zameriame sa na to, aby sme pochopili vzorce 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 súbor Contoso Sales Sample for Power BI Desktop. Ide o ten istý súbor ukážky, ktorý je použitý v článku Kurz: Vytváranie vlastných mierok v aplikácii Power BI Desktop .

Poďme na to.

Naše poznatky o jazyku DAX postavíme na troch základných pojmoch: 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ž vytvoríte vlastné vzorce, pozrime sa na syntax vzorca DAX. Syntax zahŕňa rôzne prvky, z ktorými sa vzorec skladá, alebo zjednodušene, ako je vzorec napísaný. Tu je príklad jednoduchého vzorca DAX pre mierku:

Snímka obrazovky vzorca dax s ukazovateľmi na jednotlivé prvky syntaxe.

Tento vzorec obsahuje nasledujúce prvky syntaxe:

Odpoveď: Názov mierky Celkový predaj.

B. Operátor znaku rovnosti (=), ktorý označuje začiatok vzorca. Po vypočítaní vráti výsledok.

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

D. Zátvorky ()oh ujú výraz, ktorý obsahuje 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.

Keď sa snažíme pochopiť vzorec DAX, je často užitočné zapísať každý z týchto prvkov do jazyka, v ktorý 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.

Keď túto mierku pridáme do zostavy, vypočíta a vráti hodnoty sčítaním objemov predaja pre každé ďalšie zahrnuté pole, napríklad Bunka Telefón v USA.

Možno si pomyslíte "Nerobí táto mierka to isté, ako keby som len do zostavy pridal pole ObjemPredaja?" V poriadku, á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. Toto riešenie môže teraz vyzerať trochu mätúco, ale keď sa zrýchľujú zručnosti v oblasti vzorcov DAX, poznanie tejto mierky zefektívni vaše vzorce a model. 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 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šie. 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, čo môže skrátiť a zjednodušiť čítanie dlhých vzorcov, ktoré odkazujú na mnohé stĺpce. 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é uzavrieť do úvodzoviek 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 zobrazovať podľa očakávaní. Editor DAX 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ť vzorový 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: Vytvorenie vzorca mierky

  1. Stiahnite si a otvorte ukážkový súbor Predaja Contoso aplikácie 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. V riadku vzorcov nahraďte položku Mierka zadaním nového názvu mierky Predaj za predchádzajúci štvrťrok.

  4. Po znamienku rovnosti 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 .

    Funkciu CALCULATE použijete na filtrovanie súm, ktoré chceme spočítať pomocou argumentu prenesúceho do funkcie CALCULATE. Tento typ funkcie sa označuje ako vnorené funkcie. Funkcia CALCULATE má aspoň dva argumenty. Prvým je výraz, ktorý sa má vyhodnotiť, a druhým je filter.

  5. Za ľavou zátvorkami ( pre funkciu CALCULATE zadajte suma 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], za ktorou nasleduje pravá zátvorka ).

    Tento krok vytvorí prvý argument výrazu pre našu funkciu CALCULATE.

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

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

  8. Za ľavú zátvorku ( pre funkciu PREVIOUSQUARTER zadajte 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ľúčDátumu v tabuľke Kalendár.

  9. Zavrite obidva argumenty prenesené do funkcie PREVIOUSQUARTER a funkcie CALCULATE zadaním dvoch záverečnej zátvorky )).

    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 Ikona znaku začiarknutia začiarknutia vo vzorcovom paneli alebo stlačením klávesu Enter overte vzorec a pridajte ho do tabuľky Predaj.

Zvládli ste to! Práve ste vytvorili komplexnú mierku pomocou jazyka DAX. Tento vzorec bude vypočítavať celkový predaj za predchádzajúci štvrťrok v závislosti od filtrov použitých v zostave. Môžeme napríklad vložiť ObjemPredaja a našu novú mierku Predaj za predchádzajúci štvrťrok z tabuľky Predaj do skupinového stĺpcového grafu. Potom z tabuľky Kalendár pridajte rok ako rýchly filter a vyberte rok 2011. Potom pridajte ako ďalší rýchly filter QuarterOfYear (Štvrťrok) a vyberte 4 ( 4) a zobrazí sa nám takýto graf:

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

Majte na pamäti, že vzorový model obsahuje iba malé množstvo údajov o predaji, a to od 1. 1. 2011 do 19. 19. 2013. Ak vyberiete rok alebo štvrťrok, v ktorom sa objem predaja nedá sčítať, alebo nová mierka nedokáže vypočítať údaje o predaji za aktuálny alebo predchádzajúci štvrťrok, nezobrazujú sa žiadne údaje pre toto obdobie. Ak napríklad vyberiete rok 2011 pre rok a hodnotu 1 pre štvrťrok, pre predaj za predchádzajúci štvrťrok sa nezobrazujú žiadne údaje, pretože pre štvrtý štvrťrok 2010 nie sú k dispozícii žiadne údaje.

Predstavili ste si niekoľko dôležitých aspektov vzorcov DAX:

  • Tento vzorec obsahoval dve funkcie. Funkcia časovej inteligencie PREVIOUSQUARTER je vnorená ako argument prenesený do filtrovanej 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 pomalý.

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

  • Použili ste funkciu CALCULATE. Táto funkcia je jednou 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 nepatria ďalšie diskusie o funkcii CALCULATE, s tým, ako sa budú vaše 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 riadku vzorcov?

    Výber tlačidla

  2. Čo vždy ohľadá 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, ako 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 jazyka DAX sú však jedinečné v týchto smeroch:

  • Funkcia DAX vždy odkazuje na úplný stĺpec alebo tabuľku. Ak chcete z tabuľky alebo stĺpca použiť iba 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 vykonávanie výpočtov na základe kontextu. O kontexte si povieme viac neskôr.

  • DAX obsahuje mnohé funkcie, ktoré vracajú tabuľku a nie hodnotu. 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ť jedinečné hodnoty v nej alebo vypočítať dynamické súčty v filtrovaných tabuľkách alebo stĺpcoch.

  • Jazyk 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. Funkcie DAX neodkazuje na bunku alebo rozsah buniek, ako je to pri funkcii VLOOKUP v Exceli. Funkcie DAX odkazuje 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. Dotkli sme sa len základných funkcií. S rozširovaním zručností budete v jazyku DAX vytvárať vzorce pomocou mnohých rôznych funkcií. Jedným z najlepších miest na oboznámenie sa s podrobnosťami o každej z funkcií DAX, sú odkazy na funkcie DAX.

Rýchly kvíz o funkciách

  1. Na čo funkcie vždy odkazuje?
  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 najjednoduchšie predstavte 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 filtruje. Tento typ kontextu riadka 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 miesto kontextu riadka; Používa sa skôr ako doplnok k kontextu riadka. 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 môžete jednoducho zobraziť v zostavách. Ak napríklad do vizualizácie pridáte totalCost (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ý? Videli ste, že kontext filtra možno použiť pridaním polí do vizualizácie. Kontext filtra možno použiť aj vo vzorci JAZYKA DAX definovaním filtra s funkciami ako ALL, RELATED, FILTER, CALCULATE, podľa vzťahov a ďalších mierok a stĺpcov. Pozrime sa napríklad na nasledujúci 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 nasledujúce prvky syntaxe:

Odpoveď: Názov mierky Výnosy obchodu.

B. Operátor znaku rovnosti (=), 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 ()ohlopujú 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. Úplný 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á sa používa ako filter.

Asi si viete predstaviť, že možnosť definovať kontext filtra vo vzorci vám poskytuje obrovské možnosti. Možnosť odkazovať len na konkrétnu hodnotu v súvisiacej tabuľke je len jedným z príkladov. Ak kontext úplne nepochopíte okamžite, 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ď už máte základné znalosti o najdôležitejších pojmoch v jazyku DAX, môžete sami začať vytvárať vzorce DAX pre mierky. Naučiť sa používať jazyk DAX môže byť trocha náročnejšia, k dispozícii však máte množstvo zdrojov. Po prečítaní tohto článku a experimentovaní s niekoľkými vlastnými vzorcami sa môžete dozvedieť viac 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 mnoho skvelých informácií. Ďalšie informácie nájdete v knihách, technickej dokumentácii a blogoch od spoločnosti Microsoft, ako aj popredných odborníkov z oblasti BI. Skvelým miestom, kde začať, je tiež Centrum zdrojov DAX.

Odpovede na rýchly kvíz

Syntax:

  1. Overí a zadá mierku do modelu.
  2. Zátvorky [].

Funkcie:

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

Kontexte:

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