Táto príručka so stručným návodom je určená pre používateľov, ktorí s doplnkom Power Pivot v Exceli používajú nové funkcie Power Pivot alebo projekty tabuľkového modelu vytvorené v nástrojoch SQL Server Data Tools. Poskytuje rýchly a jednoduchý úvod k tomu, ako môžete pomocou jazyka DAX (Data Analysis Expressions) vyriešiť viacero základných problémov súvisiacich s modelovaním údajov a analýzou. Táto téma obsahuje koncepčné informácie, rad úloh, ktoré môžete dokončiť, a niekoľko kvízov na testovanie toho, čo ste sa naučili. Po dokončení tejto témy by ste mali dobre porozumieť najzákladnejším základným konceptom jazyka DAX.
Čo je DAX?
DAX je súbor funkcií, operátorov a konštánt, ktoré možno použiť vo vzorci alebo výraze na výpočet a vrátenie jednej alebo viacerých hodnôt. Jednoducho povedané, jazyk DAX pomáha vytvárať nové informácie z údajov, ktoré sa už nachádzajú v modeli.
Prečo je jazyk DAX taký dôležitý?
Vytvoriť zošit a importovať doň niektoré údaje je jednoduché. Môžete dokonca vytvoriť kontingenčné tabuľky alebo kontingenčné grafy, ktoré zobrazia dôležité informácie bez použitia vzorcov jazyka DAX. Čo však v prípade, ak potrebujete analyzovať dôležité údaje o predaji vo viacerých kategóriách produktov a pre rôzne rozsahy dátumov? Alebo potrebujete skombinovať dôležité údaje inventára z viacerých tabuliek v rôznych zdrojoch údajov? Túto možnosť a aj mnohé ďalšie dôležité možnosti poskytujú vzorce jazyka DAX. Keď sa naučíte vytvárať efektívne vzorce jazyka DAX, údaje využijete naplno. Keď získate potrebné informácie, môžete začať riešiť skutočné obchodné problémy, ktoré ovplyvňujú váš konečný výsledok. Toto je Business Intelligence a jazyk DAX vám pomôže sa tam dostať.
Predpoklady
Vytváranie vzorcov v Microsoft Exceli už možno poznáte. Tieto znalosti vám pomôžu porozumieť jazyku DAX, ale aj keď nemáte žiadne skúsenosti so vzorcami v Exceli, koncepty popísané v tomto článku vám pomôžu ihneď začať vytvárať vzorce jazyka DAX a riešiť reálne problémy s BI.
Zameriame sa konkrétne na pochopenie vzorcov jazyka DAX používaných vo výpočtoch. Mali by ste už poznať základné koncepty vypočítavaných stĺpcov a mier (známych aj ako vypočítavané polia), ktoré sú opísané v Pomocníkovi doplnku Power Pivot. Mali by ste tiež poznať Power Pivot v prostredí na vytváranie obsahu a nástrojoch Excelu.
Príklad zošita
Najlepším spôsobom, ako sa naučiť jazyk DAX, je vytvoriť niekoľko základných vzorcov, použiť ich s niektorými skutočnými údajmi a zobraziť výsledky na vlastnej koži. V príkladoch a úlohách sa používa vzorový zošit jazyka DAX Formulas.xlsx Contoso. Zošit si môžete stiahnuť z lokality http://go.microsoft.com/fwlink/?LinkID=237472&clcid=0x409. Po stiahnutí zošita do počítača ho otvorte a potom otvorte okno doplnku Power Pivot.
Začnime!
Jazyk DAX budeme rámovať podľa troch veľmi dôležitých základných konceptov: syntaxe, funkcií a kontextu. Samozrejme, v jazyku DAX sú aj ďalšie dôležité koncepty, ale pochopenie týchto troch konceptov poskytne najlepší základ na budovanie zručností jazyka DAX.
Syntax
Pred vytvorením vlastných vzorcov sa pozrime na syntax vzorca jazyka DAX. Syntax zahŕňa rôzne prvky, ktoré tvoria vzorec, alebo zjednodušene informácie o spôsobe jeho zápisu. Pozrime sa napríklad na jednoduchý vzorec jazyka DAX, ktorý sa používa na vytvorenie nových údajov (hodnôt) pre každý riadok vo vypočítavanom stĺpci s názvom Marža v tabuľke FactSales: (farby textu vzorca slúžia len na ilustračné účely)
Syntax tohto vzorca zahŕňa nasledovné prvky:
- Operátor znamienka rovnosti (=) označuje začiatok vzorca a pri výpočte vráti výsledok alebo hodnotu. Všetky vzorce, ktoré vypočítavajú hodnotu, sa budú začínať znamienkom rovnosti.
- Odkazovaný stĺpec [ObjemPredaja] obsahuje hodnoty, od ktorých chceme odčítať. Odkaz na stĺpec vo vzorci je vždy ohraničený hranatými zátvorkami []. Na rozdiel od excelových vzorcov, ktoré odkazujú na bunku, vzorec jazyka DAX vždy odkazuje na stĺpec.
- Matematický operátor odčítania (-).
- Odkazovaný stĺpec [TotalCost] obsahuje hodnoty, ktoré chceme odčítať od hodnôt v stĺpci [ObjemPredaja].
Keď sa snažíte porozumieť tomu, ako čítať vzorec jazyka DAX, často je užitočné rozdeliť každý prvok do jazyka, ktorý si myslíte a ktorým hovoríte každý deň. Tento vzorec možno čítať napríklad takto:
V tabuľke FactSales pre každý riadok vypočítavaného stĺpca Marža vypočíta (=) hodnotu odčítaním hodnôt (-) v stĺpci [TotalCost] od hodnôt v stĺpci [SalesAmount].
Pozrime sa na iný typ vzorca, ktorý sa používa v miere:
Tento vzorec obsahuje nasledovné prvky syntaxe:
- Názov miery Súčet Suma predaja. Vzorce ukazovateľov môžu obsahovať názov miery, za ktorým nasleduje dvojbodka a za ním vzorec pre výpočet.
- Operátor znamienka rovná sa (=) označuje začiatok výpočtového vzorca. Po výpočte vráti výsledok.
- Funkcia SUM sčíta všetky čísla v stĺpci [ObjemPredaja]. Viac sa o funkciách dozviete neskôr.
- Zátvorky () uzavrú jeden alebo viacero argumentov. Všetky funkcie vyžadujú aspoň jeden argument. Argument odovzdá hodnotu funkcii.
- Odkazovaná tabuľka FactSales.
- Odkazovaný stĺpec [ObjemPredaja] v tabuľke FactSales. Pomocou tohto argumentu funkcia SUM vie, v ktorom stĺpci sa má agregovať funkcia SUM.
Tento vzorec si môžete prečítať takto:
Pre ukazovateľ s názvom Súčet Suma predaja vypočíta (=) súčet hodnôt v stĺpci [ObjemPredaja] v tabuľke FaktyPredaj.
Keď sa ukazovateľ umiestni do zóny presunu hodnôt v zozname polí kontingenčnej tabuľky, vypočíta a vráti hodnoty definované jednotlivými bunkami v kontingenčnej tabuľke, ako je napríklad bunka Mobilné telefóny v USA.
Všimnite si, že tento vzorec má niekoľko vecí odlišných od vzorca, ktorý sme použili pre vypočítavaný stĺpec Marža. Konkrétne sme zaviedli funkciu SUM. Funkcie sú vopred napísané vzorce, ktoré uľahčujú vykonávanie zložitých výpočtov a manipuláciu s číslami, dátumami, časom, textom a ďalšími položkami. Viac sa o funkciách dozviete neskôr.
Na rozdiel od vyššie uvedeného stĺpca s informáciami o marži sa pred stĺpcom [ObjemPredaja] zobrazila tabuľka FactSales, do ktorej stĺpec patrí. Nazýva sa úplný názov stĺpca, pretož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 bol do vzorca zahrnutý názov tabuľky. Dlhé vzorce, ktoré odkazujú na mnohé stĺpce, tak môžu byť kratšie a čitateľnejšie. Je však vhodné, aby ste názov tabuľky vždy zahrnuli do vzorcov s mierami, a to aj vtedy, keď sa nachádzate v tej istej tabuľke.
Poznámka
Ak názov tabuľky obsahuje medzery, vyhradené kľúčové slová alebo nepovolené znaky, názov tabuľky je nutné uzavrieť do jednoduchých úvodzoviek. Názvy tabuliek musíte uzavrieť do úvodzoviek aj vtedy, ak názov obsahuje znaky mimo rozsahu alfanumerických znakov ANSI, a to bez ohľadu na to, či vaše miestne nastavenie podporuje alebo nepodporuje túto tabuľku znakov.
Je veľmi dôležité, aby vaše vzorce mali správnu syntax. Vo väčšine prípadov sa vtedy, ak syntax nie je správna, vráti syntaktická chyba. V iných prípadoch môže byť syntax správna, ale vrátené hodnoty nemusia zodpovedať vašim očakávaniam. Power Pivot (a nástroje SQL Server Data Tools) obsahuje funkciu IntelliSense, ktorá sa používa na vytváranie syntakticky správnych vzorcov tým, že pomáha pri výbere správnych prvkov.
Vytvorme jednoduchý vzorec. Táto úloha vám pomôže lepšie pochopiť syntax vzorca a spôsob, akým vám môže pomôcť funkcia IntelliSense v riadku vzorcov.
Úloha: Vytvorenie jednoduchého vzorca pre vypočítaný stĺpec
- Ak sa ešte nenachádzate v okne doplnku Power Pivot, v Exceli kliknite na páse s nástrojmi doplnku Power Pivot na okno doplnku Power Pivot.
- V okne doplnku Power Pivot kliknite na tabuľku FactSales (karta).
- Presuňte sa na stĺpec úplne vpravo a potom v hlavičke stĺpca kliknite na položku Pridať stĺpec.
- Kliknite na riadok vzorcov v hornej časti okna návrhára modelu.
Kurzor sa zobrazí v riadku vzorcov. V riadku vzorcov môžete zadať vzorec pre vypočítavaný stĺpec alebo vypočítavané pole.
Pozrime sa na tri tlačidlá naľavo od riadka vzorcov.
Keď je kurzor v riadku vzorcov aktívny, aktivujú sa tieto tri tlačidlá. Tlačidlo úplne vľavo, X, je jednoducho tlačidlo zrušenia. Pokračujte a kliknite naň. Kurzor sa prestane zobrazovať v riadku vzorcov a tlačidlá Zrušiť a značky začiarknutia sa nezobrazujú. Pokračujte a znova kliknite do riadka vzorcov. Tlačidlá Zrušiť a Znak začiarknutia sa znova zobrazia. Znamená to, že ste pripravení začať so zadávaním vzorca.
Tlačidlo znaku začiarknutia je tlačidlo vzorca začiarknutia. Až po zadaní vzorca nedokáže veľa vecí. O chvíľu sa k tomu vrátime.
Kliknite na tlačidlo Fx . Zobrazí sa nové dialógové okno. Dialógové okno Vloženie funkcie. Dialógové okno Vloženie funkcie je najjednoduchším spôsobom, ako začať so zadávaním vzorca jazyka DAX. Funkciu pridáme do vzorca pri vytváraní ukazovateľa o niečo neskôr, ale momentálne nemusíte do vzorca vo vypočítanom stĺpci pridávať žiadnu funkciu. Pokračujte a zavrite dialógové okno Vloženie funkcie. - Do riadka vzorcov zadajte znak rovnosti = a potom začiatočnú hranatú zátvorku [. Zobrazí sa malé okno so všetkými stĺpcami z tabuľky FactSales. Toto je IntelliSense v akcii.
Keďže vypočítavané stĺpce sa vždy vytvárajú v aktívnej tabuľke, v ktorej sa nachádzate, nie je potrebné uvádzať názov stĺpca pred názov tabuľky. Pokračujte, posuňte sa nadol a potom dvakrát kliknite na položku [PredajMnožstvo]. Môžete sa tiež posunúť na požadovaný názov stĺpca a potom stlačiť kláves Tab.
Kurzor je teraz aktívny napravo od stĺpca [PredajMnožstvo]. - Zadajte medzeru, operátor odčítania - (znamienko mínus) a potom zadajte ďalšiu medzeru.
- Teraz zadajte ďalšiu ľavú hranatú zátvorku [. Teraz vyberte stĺpec [VrátenéMnožstvo] a stlačte kláves Enter.
Ak sa zobrazí chyba, pozorne si prezrite syntax. V prípade potreby ho porovnajte so vzorcom vo vyššie uvedenom stĺpci s informáciami vo vypočítanom stĺpci Marž.
Po dokončení vzorca stlačením klávesu Enter sa v stavovom riadku v dolnej časti okna doplnku Power Pivot zobrazí slovo Výpočty . Ide to rýchlo, aj keď ste práve vypočítali nové hodnoty pre viac ako tri milióny riadkov. - Kliknite pravým tlačidlom myši na hlavičku stĺpca a premenujte stĺpec NetSales.
To je všetko! Práve ste vytvorili jednoduchý, no veľmi výkonný vzorec jazyka DAX. Pre každý riadok v tabuľke FactSales vzorec NetSales vypočíta hodnotu odčítaním hodnoty v stĺpci [VrátenéMnožstvo] od hodnoty v stĺpci [ObjemPredaja]. Všimnite si, ako sme povedali "Pre každý riadok". Toto je pohľad na ďalší veľmi dôležitý koncept v jazyku DAX; kontext riadka. Ďalšie informácie o kontexte riadka získate nižšie.
Vecou, ktorú je pri zadávaní operátora do vzorca jazyka DAX potrebné pochopiť, je typ údajov v argumentoch, ktoré používate. Ak by ste napríklad zadali nasledujúci vzorec = 1 & 2, vrátená hodnota by bola textová hodnota "12". Je to preto, že operátor ampersand (&) je určený na zreťazenie textu. Jazyk DAX interpretuje tento vzorec takto: Vypočíta výsledok tak, že hodnotu 1 použijete ako text a hodnotu 2 sa pridá ako text. Ak by ste teraz zadali = 1 + 2, jazyk DAX prečíta tento vzorec takto: Výsledok sa vypočíta pomocou číselnej hodnoty 1 a pripočítania číselnej hodnoty 2. Výsledkom je samozrejme číselná hodnota "3". Jazyk DAX vypočítava výsledné hodnoty v závislosti od operátora vo vzorci, nie na základe typu údajov stĺpcov použitých v argumente. Typy údajov v jazyku DAX sú veľmi dôležité, ale sú mimo rozsahu tejto príručky so stručným návodom. Ďalšie informácie o typoch údajov a operátoroch vo vzorcoch jazyka DAX nájdete v referenčných informáciách o jazyku DAX (http://go.microsoft.com/fwlink/?LinkId=239769&clcid=0x409) na lokalite Books Online.
Skúsme inú. Teraz vytvoríte ukazovateľ pomocou napísania vzorca a pomocou funkcie IntelliSense. Ak úplne nerozumiete vzorcu, nerobte si prílišné starosti. Dôležité je naučiť sa vytvoriť vzorec v správnej syntaxi pomocou viacerých prvkov naraz.
Úloha: Vytvorenie vzorca miery
- V tabuľke FactSales kliknite na ľubovoľnú prázdnu bunku v oblasti výpočtov. Ide o oblasť prázdnych buniek priamo pod tabuľkou v okne doplnku Power Pivot.
- Do riadka vzorcov zadajte názov Predaj v predchádzajúcom štvrťroku:.
- Zadajte znak rovnosti = a začnite vzorec výpočtu.
- 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 .
- Zadajte ľavú zátvorku ( na začiatok argumentov, ktoré sa majú odovzdať funkcii CALCULATE.
Všimnite si, že po zadaní ľavej zátvorky zobrazí technológia IntelliSense argumenty požadované pre funkciu CALCULATE. O argumentoch sa dozviete za chvíľu. - Zadajte prvých pár písmen tabuľky FactSales a potom v rozbaľovacom zozname dvakrát kliknite na položku FaktyPredaj[Predaj].
- Prvý filter určíte zadajte čiarkou (,), potom zadajte hodnotu PRED a potom dvakrát kliknite na funkciu PREVIOUSQUARTER .
Po výbere funkcie PREVIOUSQUARTER sa zobrazí ďalšia ľavá zátvorka, čo znamená, že je potrebný ďalší argument. tentoraz pre funkciu PREVIOUSQUARTER. - Zadajte prvých pár písmen Dim a potom dvakrát kliknite na položku DimDate[DateKey].
- Zavrite argument odovzdávaný funkcii PREVIOUSQUARTER a funkciu CALCULATE zadaním dvoch pravých zátvoriek )).
Vzorec by teraz mal vyzerať takto:
Predaj v predchádzajúcom štvrťroku:=CALCULATE(FactSales[Sales], PREVIOUSQUARTER(DimDate[DateKey])) - Kliknutím na tlačidlo Skontrolovať vzorec v riadku vzorcov overte vzorec. Ak sa zobrazí chyba, skontrolujte každý prvok syntaxe.
Podarilo sa vám to! Práve ste vytvorili mierku pomocou jazyka DAX, a nie je to jednoduché. Tento vzorec vypočíta celkový predaj za predchádzajúci štvrťrok v závislosti od filtrov použitých v kontingenčnej tabuľke alebo kontingenčnom grafe.
Práve ste sa oboznámili s niekoľkými dôležitými aspektmi vzorcov jazyka DAX. Tento vzorec najprv obsahoval dve funkcie. Všimnite si, že funkcia PREVIOUSQUARTER je vnorená ako argument odovzdaný funkcii COMCULATE . Vzorce jazyka DAX môžu obsahovať až 64 vnorených funkcií. Je nepravdepodobné, že by vzorec niekedy obsahoval toľko vnorených funkcií. V skutočnosti by bolo veľmi ťažké vytvoriť a ladiť takýto vzorec a pravdepodobne by nebol ani veľmi rýchly.
V tomto vzorci ste tiež použili filtre. Filtre zužujú to, čo sa vypočíta. V tomto prípade ste ako argument vybrali jeden filter, čo je vlastne iná funkcia. Ďalšie informácie o filtroch získate neskôr.
Nakoniec ste použili funkciu COMCULATE. Ide o jednu z najvýkonnejších funkcií v jazyku DAX. Pri vytváraní dátových modelov a vytváraní zložitejších vzorcov budete túto funkciu pravdepodobne používať mnohokrát. Diskusia o funkcii CALCULATE je mimo rozsahu tohto stručného úvodu, ale s rastúcimi znalosťami jazyka DAX venujte osobitnú pozornosť jednej.
Poznámka
Ak chcete vo vzorcoch jazyka DAX používať funkcie časovej inteligencie, zvyčajne je potrebné zadať jedinečný stĺpec dátumu pomocou dialógového okna Označiť ako tabuľku dátumu. V zošite Vzorec jazyka Contoso DAX Samples.xlsx je stĺpec FormátDátumu v tabuľke DimDate vybratý ako jedinečný stĺpec dátumu.
Dodatočný kredit
Možno sa pýtate: Aký je najjednoduchší vzorec jazyka DAX, ktorý môžem vytvoriť? Odpoveď na to je "vzorec, ktorý nemusíte". A presne to môžete urobiť použitím štandardnej agregačnej funkcie v miere. Takmer každý dátový model potrebuje filtrovanie a výpočet na základe agregovaných údajov. Napríklad funkcia SUM v ukazovateli Sum of Sum, ktorú ste videli predtým, sa používa na sčítanie všetkých čísel v konkrétnom stĺpci. Jazyk DAX zahŕňa niekoľko ďalších funkcií, ktoré tiež agregujú hodnoty. Vzorce môžete automaticky vytvárať pomocou štandardných agregácií pomocou funkcie Automatický súčet.
Úloha dodatočného kreditu: Vytvorenie vzorca miery pomocou funkcie Automatický súčet
- V tabuľke FactSales sa posuňte na stĺpec ReturnQuantity a potom kliknutím na hlavičku stĺpca vyberte celý stĺpec.
- Na karte Domov na páse s nástrojmi kliknite v skupine Výpočty na tlačidlo Automatický súčet .
Kliknite na šípku nadol vedľa tlačidla Automatický súčet a potom kliknite na položku Priemer (všimnite si aj iné štandardné agregačné funkcie, ktoré môžete použiť).
Okamžite sa vytvorí nový ukazovateľ s názvom Average of ReturnQuantity: nasledovaný vzorcom =AVERAGE([VrátenéMnožstvo]).
Nebolo to jednoduché? Samozrejme, nie všetky vzorce, ktoré vytvoríte, budú také jednoduché. Pomocou funkcie Automatický súčet však môžete vytvárať rýchle a jednoduché vzorce pomocou štandardných agregačných výpočtov.
Vďaka tomu získate pomerne dobré pochopenie syntaxe používanej vo vzorcoch jazyka DAX. Tiež ste sa oboznámili s niekoľkými skvelými funkciami, ako sú IntelliSense a AutoSum, ktoré vám pomôžu vytvárať rýchle, jednoduché a presné vzorce. O syntaxi sa samozrejme môžete naučiť oveľa viac. Ďalšie informácie nájdete v odkaze na jazyk DAX alebo na lokalite SQL Books Online.
Rýchly kvíz so syntaxou
- Aká je funkcia tohto tlačidla v riadku vzorcov?
- Čo vždy obklopuje názov stĺpca vo vzorci jazyka DAX?
- Ako by ste napísali vzorec pre nasledujúce položky:
V tabuľke DimProduct pre každý riadok vypočítavaného stĺpca JednotkováRezerva vypočíta hodnotu odčítaním hodnôt v stĺpci JednotkovéNáklady od hodnôt v stĺpci JednotkováCena?
Odpovede nájdete na konci tejto témy.
Funkcie
Funkcie sú preddefinované vzorce, ktoré vykonávajú výpočty pomocou konkrétnych hodnôt, ktoré sa nazývajú argumenty, v určitom poradí alebo štruktúre. Argumentmi môžu byť iné funkcie, iný vzorec, odkazy na stĺpce, čísla, text, logické hodnoty, ako napríklad TRUE alebo FALSE alebo konštanty.
Jazyk DAX zahŕňa nasledujúce kategórie funkcií: dátum a čas, informačné, logické, matematické, štatistické, textové funkcie a funkcie časovej inteligencie. Ak máte skúsenosti s funkciami v excelových vzorcoch, mnohé funkcie v jazyku DAX sa zobrazia podobne. Funkcie jazyka DAX sú však jedinečné v nasledujúcich vlastnostiach:
- Funkcia jazyka DAX vždy odkazuje na úplný stĺpec alebo tabuľku. Ak chcete použiť iba konkrétne hodnoty z tabuľky alebo stĺpca, môžete do vzorca pridať filtre.
- Ak potrebujete prispôsobiť výpočty po jednotlivých riadkoch, jazyk DAX poskytuje funkcie, ktoré umožňujú použiť aktuálnu hodnotu riadka alebo súvisiacu hodnotu ako druh argumentu a vykonávať výpočty, ktoré sa líšia v závislosti od kontextu. Viac o kontexte sa dozviete neskôr.
- Jazyk DAX zahŕňa množstvo funkcií, ktoré vrátia namiesto hodnoty tabuľku. Tabuľka sa nezobrazí, ale slúži na poskytovanie vstupných údajov pre iné funkcie. Môžete napríklad načítať tabuľku a potom v nej spočítať jedinečné hodnoty alebo vypočítať dynamické súčty vo filtrovaných tabuľkách alebo stĺpcoch.
- Jazyk DAX zahŕňa množstvo funkcií č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 v rámci paralelných období.
Niekedy je ťažké zistiť, ktoré funkcie budete musieť vo vzorci použiť. Power Pivot a návrhár tabuľkového modelu v nástrojoch SQL Server Data Tools obsahujú funkciu Vložiť funkciu. Ide o dialógové okno, ktoré pomáha pri výbere funkcií podľa kategórií a poskytuje stručné popisy jednotlivých funkcií.
Vytvorme nový vzorec obsahujúci funkciu, ktorú vyberiete pomocou funkcie Vložiť funkciu:
Úloha: Pridanie funkcie do vzorca pomocou funkcie Vložiť funkciu
- V tabuľke FactSales sa posuňte na stĺpec úplne vpravo a potom v hlavičke stĺpca kliknite na položku Pridať stĺpec.
- Do riadka vzorcov zadajte znak rovnosti =.
- Kliknite na tlačidlo Vložiť funkciu .
Týmto otvoríte dialógové okno Vloženie funkcie . - V dialógovom okne Vloženie funkcie kliknite na pole so zoznamom Vyberte kategóriu . Predvolene je vybratá možnosť Všetky a všetky funkcie v kategórii Všetky sú uvedené nižšie. Je to veľa funkcií, takže ich budete chcieť filtrovať, aby ste jednoduchšie našli požadovaný typ funkcie.
- V tomto vzorci chcete vrátiť údaje, ktoré už existujú v inej tabuľke. Na to použijete funkciu v kategórii Filter. Pokračujte, kliknite na kategóriu Filter a potom v časti Vyberte funkciu sa posuňte nadol a dvakrát kliknite na funkciu SÚVISIACE. Kliknutím na tlačidlo OK zavriete dialógové okno Vloženie funkcie .
- Pomocou technológie IntelliSense môžete vyhľadať a vybrať stĺpec DimChannel[NázovKanála].
- Zatvorte vzorec a stlačte kláves Enter.
- Po dokončení vzorca stlačením klávesu Enter sa v stavovom riadku v dolnej časti okna doplnku Power Pivot zobrazí slovo Výpočty. Teraz uvidíte, že ste práve vytvorili nový stĺpec v tabuľke FactSales s informáciami o kanáli z tabuľky DimChannel.
- Premenujte stĺpec Kanál.
Vzorec by mal vyzerať takto: =RELATED(DimChannel[ChannelName])
Práve ste sa zoznámili s ďalšou veľmi dôležitou funkciou jazyka DAX, funkciou RELATED . Funkcia RELATED vráti hodnoty z inej tabuľky. Funkciu RELATED môžete použiť za predpokladu, že existuje vzťah medzi tabuľkou, v ktorej sa práve nachádzate, a tabuľkou obsahujúcou hodnoty, ktoré chcete získať. Funkcia RELATED má samozrejme obrovské možnosti. V tomto prípade teraz môžete zahrnúť predajný kanál pre každý predaj do tabuľky FactSales. Teraz môžete skryť tabuľku DimChannel zo zoznamu polí kontingenčnej tabuľky, čo uľahčuje navigáciu a zobrazenie najdôležitejších informácií, ktoré skutočne potrebujete. Podobne ako funkcia CALCULATE popísaná vyššie, aj funkcia RELATED je veľmi dôležitá a pravdepodobne ju použijete mnohokrát.
Ako vidíte, funkcie v jazyku DAX vám môžu pomôcť vytvoriť veľmi výkonné vzorce. Naozaj sme sa dotkli len základov funkcií. So zdokonaľovaním zručností s jazykom DAX budete vytvárať vzorce pomocou mnohých rôznych funkcií. Jedným z najlepších miest na získanie podrobných informácií o všetkých funkciách jazyka DAX sú odkazy na jazyk DAX (Data Analysis Expressions).
Rýchly kvíz funkcií
- Na čo funkcia vždy odkazuje?
- Môže vzorec obsahovať viac funkcií?
- Akú kategóriu funkcií by ste použili na zreťazenie dvoch textových reťazcov do jedného?
Odpovede nájdete na konci tejto témy.
Kontext
Kontext je jedným z najdôležitejších konceptov jazyka DAX, ktorým je potrebné porozumieť. 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 predstavíme ako aktuálny riadok. Pamätáte si napríklad vypočítavaný stĺpec Marž, ktorý ste videli predtým pri štúdiu syntaxe? Vzorec =[ObjemPredaja] - [CelkovéNáklady] vypočíta hodnotu v stĺpci Marža pre každý riadok tabuľky. Hodnoty pre každý riadok sa vypočítavajú z hodnôt v dvoch stĺpcoch [ObjemPredaja] a [CelkovéNáklady] v tom istom riadku. Jazyk DAX dokáže vypočítať hodnoty pre každý riadok v stĺpci Marža, pretože obsahuje kontext: Pre každý riadok vezme hodnoty v stĺpci [CelkovéNáklady] a odpočíta ich od hodnôt v stĺpci [ObjemPredaja].
Vo vybratej bunke nižšie bola hodnota 49,54 $ v aktuálnom riadku vypočítaná odčítaním hodnoty 51,54 $ v stĺpci [TotalCost] od hodnoty 101,08 $ v stĺpci [ObjemPredaja].
Kontext riadka sa nevzťahuje len na vypočítané stĺpce. Kontext riadka sa použije aj vtedy, keď vzorec obsahuje funkciu, ktorá používa filtre na identifikáciu jedného riadka v tabuľke. Funkcia vo svojej podstate použije kontext riadka pre každý riadok tabuľky, v ktorom sa filtruje. Tento typ kontextu riadka sa najčastejšie vzťahuje na mierky.
Kontext filtra
Kontext filtra je trochu zložitejší na pochopenie ako kontext riadka. Kontext filtra si môžete najjednoduchšie predstaviť takto: Jeden alebo viac filtrov použitých vo výpočte, ktorý určuje výsledok alebo hodnotu.
Namiesto kontextu riadka neexistuje kontext filtra. Vzťahuje sa spolu s kontextom riadka. Ak chcete napríklad ďalej zúžiť počet hodnôt, ktoré sa majú zahrnúť do výpočtu, môžete použiť kontext filtra, ktorý určuje nielen kontext riadka, ale aj konkrétnu hodnotu (filter) v kontexte riadka.
Kontext filtra je ľahko viditeľný v kontingenčných tabuľkách. Keď napríklad pridáte Celkové náklady do oblasti Hodnoty a potom do riadka alebo stĺpcov 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ý? Kontext filtra možno najjednoduchšie použiť pridaním označení stĺpcov a riadkov a rýchlych filtrov do kontingenčnej tabuľky, kontext filtra možno použiť aj vo vzorci jazyka DAX definovaním filtra pomocou funkcií ako ALL, RELATED, FILTER, CALCULATE, by relationships a by relationship and by other measures and columns. Pozrime sa napríklad na nasledujúci vzorec v ukazovateľi s názvom KamennýPredaj:
Tento vzorec je zrejme zložitejší ako niektoré iné vzorce, ktoré ste videli. Ak však chcete tomuto vzorcu lepšie porozumieť, môžeme ho rozložiť podobne ako v prípade iných vzorcov.
Tento vzorec obsahuje nasledovné prvky syntaxe:
- Názov miery StoreSales nasledovaný dvojbodkou :.
- Operátor znamienka rovná sa (=) označuje začiatok vzorca.
- Funkcia CALCULATE vyhodnotí výraz ako argument v kontexte, ktorý je upravený zadanými filtrami.
- Zátvorky () uzavrú jeden alebo viacero argumentov.
- Miera [Predaj] v tej istej tabuľke ako výraz. Ukazovateľ predaja obsahuje vzorec: =SUM(FactSales[SalesAmount]).
- Každý filter oddeľuje čiarkou (,).
- Odkazovaný stĺpec a konkrétna hodnota DimChannel[NázovKanála] ="Ukladanie" ako filter.
Tento vzorec zabezpečí, že sa budú vypočítavať iba hodnoty predaja, ktoré sú definované ukazovateľom Predaj ako filter, a to len pre riadky v stĺpci DimChannel[NázovKanála] s hodnotou Store ako filter.
Ako si viete predstaviť, schopnosť definovať kontext filtra vo vzorci má obrovské a výkonné možnosti. Možnosť odkazovať iba na konkrétnu hodnotu v súvisiacej tabuľke je len jedným z takýchto príkladov. Nemajte obavy, ak hneď úplne nepochopíte kontext. Pri vytváraní vlastných vzorcov lepšie pochopíte kontext a dôvod, prečo je v jazyku DAX taký dôležitý.
Kontextový rýchly kvíz
- Aké dva typy kontextu existujú?
- Čo je kontext filtra?
- Čo je kontext riadka?
Odpovede nájdete na konci tejto témy.
Súhrn
Teraz, keď už máte základné znalosti o najdôležitejších konceptoch jazyka DAX, môžete začať vytvárať vzorce jazyka DAX pre vypočítavané stĺpce a miery samostatne. Naučiť sa jazyka DAX môže byť skutočne trochu zložitejšie, k dispozícii však máte veľa zdrojov informácií. Po niekoľkonásobnom prečítaní tejto témy a experimentovaní s niekoľkými vlastnými vzorcami sa môžete dozvedieť viac o ďalších konceptoch a vzorcoch jazyka DAX, ktoré vám môžu pomôcť vyriešiť vlastné podnikateľské problémy. K dispozícii sú mnohé zdroje DAX dostupné v Pomocníkovi pre Power Pivot, knihách SQL Server Books, technickej dokumentácii a blogoch od spoločnosti Microsoft a popredných odborníkov z oblasti BI. Skvelým miestom, kde môžete začať, je lokalita Wiki DAX Resource Center (http://social.technet.microsoft.com/wiki/contents/articles/dax-resource-center.aspx). Dôležitým zdrojom informácií je aj referenčná príručka jazyka DAX (Data Analysis Expressions ). Nezabudnite ho uložiť medzi obľúbené položky.
Technická dokumentácia o jazyku DAX v tabuľkovom modeli analytických nástrojov, ktorá je k dispozícii na stiahnutie (http://go.microsoft.com/fwlink/?LinkID=237472&clcid=0x409), poskytuje podrobnejší pohľad na koncepty, ktoré sú tu uvedené, ako aj na mnohé ďalšie rozšírené koncepty a vzorce. V tejto technickej dokumentácii sa používa aj ten istý vzorový zošit jazyka Contoso DAX Formulas.xlsx, ktorý už máte.
Odpovede k rýchlemu kvízu
Syntax:
- Otvorí funkciu Vložiť funkciu.
- Hranaté zátvorky [].
- =[JednotkováCena] - [JednotkováCena]
Funkcie:
- Tabuľku a stĺpec.
- Áno. Vzorec môže obsahovať až 64 vnorených funkcií.
- Textové funkcie.
Kontext:
- Kontext riadka a kontext filtra.
- Jeden alebo viacero filtrov vo výpočte, ktoré určujú jednu hodnotu.
- Aktuálny riadok.