Pred pár dňami pridal Microsoft novú syntax funkcie ALL, ktorá umožňuje v kontexte výpočtu zrušiť všetky filtre naraz. A najmä pri komplikovanejších dátových modeloch príde vhod. Preto sa teraz na ňu pozrieme.
Nasledovné informácie platia v čase písania tohto článku zatiaľ iba v Power BI a Azure Analysis Services. A pravdepodobne v blízkej dobe aj pre SSAS Tabular 2019. Podpora v ostatných verziách PowerPivotu je zatiaľ otázna.
A prečo je potrebá tá nová syntax funkcie ALL?
Keď ste „po starom“ chceli zrušiť všetky filtre v kontexte výpočtu, tak ste museli použiť funkciu ALL v CALCULATE, pričom bolo potrebné použiť ju v tejto variante:
ALL(tabuľka)
…kde parameter „tabuľka“ musel byť názov centrálnej/faktovej tabuľky z dátového modelu. Čiže ak si zoberieme náš vzorový súbor PowerPivotu, resp. Power BI, a preberieme príklad z jedného staršieho článku o antifiltroch, kde sme chceli vypočítať percento Obratu (merítko Obrat v tabuľke Objednávky) z celkového obratu, tak sme celkový obrat vypočítali takto:
Celkový obrat := CALCULATE([Obrat]; ALL(‚Objednávky‘))
To samozrejme funguje doteraz úplne bez problémov. Problém však bol vtedy, keď ste mali v dátovom modeli viacero centrálnych/faktových tabuliek. Vtedy ste do funkcie CALCULATE museli zadať ALL toľkokrát, koľko ste mali tých centrálnych/faktových tabuliek v dátovom modeli. Pri malých modeloch to nevadilo, ale pri väčších modeloch to už bol problém. Pretože niektoré z tých stoviek vzorcov, ktoré ste tam mali, zrazu prestali fungovať. A pri pridávaní ďalších centrálnych/faktových tabuliek bolo potrebné myslieť na to, že treba preveriť všetky vzorce s funkciou ALL, prípadne všetkými funkciami čo začínajú na ALL***, a prípadne ich upraviť. A pretestovať, atď. atď..
Tomu je teraz našťastie koniec. A ak chcete odteraz zrušiť všetky filtre v kontexte výpočtu, aby ste vypočítali daný ukazovateľ na úrovni grand totalu / celkového súčtu, tak po novom stačí použiť túto novú syntax jazyka ALL s prázdnymi zátvorkami:
ALL()
Čiže hore uvedené merítko vieme po novom napísať takto:
Celkový obrat := CALCULATE([Obrat]; ALL())
Výhoda okrem skráteného zápisu je najmä v tom, že po pridaní ďalších tabuliek do dátového modelu nemusíte myslieť na to, že treba do všetkých takýchto CALCULATE-ov pridať ďalšiu funkciu ALL. Jednoducho to raz napíšete, a je to vybavené. A najmä sa k tomu už nemusíte nikdy ďalej vracať.
Takže takáto je nová syntax funkcie ALL v jazyku DAX, a jej výhody. Oceníte to samozrejme až pri väčších a komplikovanejších dátových modeloch. A ušetrený čas môžete venovať príjemnejším veciam 🙂
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.