PowerPivot už vo svojej tretej verzii pridal podporu pre premenné v jazyku DAX. Tie prinášajú množstvo zjednodušení do výpočtov, a zbavujú Vás nutnosti vytvárať zbytočne veľa jednorázových merítok či opakovania častí vzorcov. A ak ste už v DAXe napísali niekoľko stoviek vzorcov, tak sa Vám premenné v jazyku DAX budú náramne hodiť 🙂
Premenné v jazyku DAX fungujú rovnako ako premenné v programovacích jazykoch. Je to miesto v pamäti, ktoré si pomenujeme vlastným menom, priradíme doňho hodnotu, a následne ho môžeme hocikoľkokrát použiť vo vzorci. Výhody takéhoto prístupu oproti vytváraniu merítok sú nasledovné:
- netreba vytvárať zbytočne merítko, ak jeho zmyslom bolo iba jednorazovo si zjednodušiť výpočet
- nie sú zobrazené pre užívateľov, a preto ani nezapratávajú zbytočne ponuku
- dá sa nimi presne regulovať postupnosť výpočtu pri zložitých výpočtoch, čo pri merítkach nejde
- vypočítajú sa ešte predtým, ako sa spustí výpočet pre merítko, kde sú použité
- majú vysoký potenciál urýchliť počítanie vzorcov
- zjednodušujú komplikované vzorce
- dajú sa nimi obchádzať niektoré chyby v DAXe
A nevýhody sú nasledovné:
- dajú sa použiť iba vo vzorci pre dané merítko, kde sú zadefinované (viď príklad nižšie)
- fungujú iba of PowerPivotu v3, čiže od Excelu 2016, SSAS 2016 alebo v aktuálnom Power BI
A ako sa vôbec používajú?
Základná syntax je takáto (nadýchnite sa, bude sa treba zamyslieť):
Merítko :=
VAR premenná1 = vzorec1
VAR premenná2 = vzorec2
…… VAR premennáN = vzorecN
RETURN
vzorec_pre_výpočet_merítka
Ako ste si asi všimli, premenné sa používajú v rámci vzorca pre výpočet merítka (alebo aj vypočítaného stĺpca), za pôvodným operátorom „:=“ resp „=“, a zároveň pred pôvodným vzorcom. Na prvom riadku vzorca zadáte VAR, na druhom riadku zadáte „premenná=vzorec“, kde premenná je názov premennej a vzorec je vzorec, ktorého hodnota sa uloží do premennej. Po zadefinovaní všetkých premenných musí byť uvedené RETURN, a za ním samotný vzorec pre dané merítko/stĺpec, ktorý používa tieto premenné. Premenné nie je nutné použiť vo vzorci, môžete ich tam mať „len tak“ – zmysel to potom síce nemá, ale poniektorým komplikovačom a vykazovačom práce to príde ako vhodný nástroj 🙂
Takže teraz príklad. Keď ste predtým chceli robiť napríklad dynamickú segmentáciu produktov do kategórií podľa ich obratu, spravili ste takýto vypočítaný stĺpec:
=CALCULATE(VALUES(Kategorie[Kategoria]); FILTER(Kategorie; EARLIER([Obrat za produkt]) >= Kategorie[Od] && EARLIER([Obrat za produkt]) <= Kategorie[Do]))
Pomocou premenných to ale ide zjednodušiť takto:
Na poslednom riadku vzorca je uvedený samotný vzorec pre daný vypočítaný stĺpec, ktorý 2x používa hodnotu premennej Obrat. Všimnite si aj vyfarbovanie v rámci vzorca, ktoré pomáha s jeho ľahším čítaním a prípadným hľadaním chýb vo vzorci – premenné sú vyfarbené zelenou farbou. A už len kvôli tej zelenej farbe si to musíte vyskúšať, lebo inak nebudete vedieť zaspať 🙂
Každopádne, už takmer 2 roky tam máme túto funkcionalitu (okrem iných noviniek), a najmä pri pokročilej analytike Vám premenné v jazyku DAX neskutočne pomôžu, či už v jednoduchosti, alebo čitateľnosti vzorcov. A takisto sa nimi dajú relatívne jednoducho vyriešiť viaceré chyby v DAXe. Čo oceníte po dlhej prebdenej noci, keď ste si istí, že ten vzorec máte správne napísaný, ale stále to nechce fungovať správne 🙂 Niekedy si myslím, že to tam v Microsofte dali primárne na tento účel, ale ktovie. Tak či tak sa im ale podarilo dať do DAXu veľmi užitočnú funkcionalitu, a dúfam, že ju budete používať aj Vy 🙂 A ak máte s premennými podobné, alebo nebodaj opačné skúsenosti, podeľte sa s nimi do komentárov pod týmto článkom.
Autor, tréner a expert na PowerPivot, Power BI a jazyk DAX. Založil som tento web, aby som pomohol dostať PowerPivot a Power BI do širšieho povedomia, a aby som ľuďom ukázal, že aj komplexné analytické problémy idú riešiť jednoducho. Po nociach vzývam Majstra Yodu a tajne plánujem ovládnutie vesmíru.