Ukazovatele ako ikony v tabuľkách v Power BI

Dnes si ukážeme chuťovku, ako v Power BI zobraziť ukazovatele ako ikony v tabuľkách, kde normálne očakávate len sledované čísla:

Ikonky sa budú samozrejme zobrazovať podľa Vami nadefinovaných pravidiel, čím viete elegantne obísť obmedzenia podmieneného formátovania v Power BI (ktoré je tam skôr na okrasu ako na úžitok). Využijeme na to jednu skrytú funkcionalitu Power BI, ktorá vie za určitých okolností zobrazovať aj obrázky.

Na to, aby sme to vedeli spraviť, budeme najprv potrebovať ikonky uložiť ako samostatné obrázky. A následne ich nahrať niekam na webový server, na ktorý sa vie dostať naše Power BI. A začneme s našim vzorovým súborom Power BI, ktorý si môžete stiahnuť tu.

Na hore uvedenom obrázku sú použité tieto ikonky:

Následne vytvoríme nové merítko, ktoré bude vraciať URL adresu príslušného obrázka podľa našich pravidiel. Povedzme, že budú takéto:

  • Ak je obrat v danom období menší ako 5 miliónov, zobraz červený smajlík
  • Ak je obrat od 5 do 8 miliónov, zobraz žltý smajlík
  • Ak je obrat nad 8 miliónov, zobraz zelený smajlík

Merítko sa bude volať „Stav“, a vzorec preňho bude nasledovný:

Stav = “http://www.powerpivot.sk/subory/” & IF([Obrat] < 5000000; “smiley_red.png”; IF([Obrat] < 8000000; “smiley_yellow.png”; “smiley_green.png”))

Keď si dáme takéto merítko zobraziť v tabuľke s Obratom, napr. po rokoch, tak výsledok nebude vyzerať zrovna vábne:

Power BI si vie našťastie obrázok z daného URL stiahnuť a zobraziť v tabuľke, resp. matici. Slúži to presne na to, aby ste zobrazili vlastné ukazovatele ako ikony v tabuľkách. Pre využitie funkcionality stačí danému stĺpcu alebo merítku nastaviť vlastnosť „Kategória údajov“ na „URL adresa obrázka“. Spravíte to tak, že kliknete v ponuke na daný stĺpec alebo merítko, prejdete v hornom menu do záložky Modelovanie, a zmeníte vlastnosť „Kategória údajov“ z „Nekategorizované“ na „URL adresa obrázka“:

Problém je ale v tom, že pri merítkach to nastaviť nejde. Jeden čas to síce aj išlo, ale v čase písania tohto článku to už z nejakého záhadného dôvodu nefunguje. Momentálne to funguje len pri stĺpcoch tabuľky. Normálne by sme museli čakať na ďalšiu aktualizáciu Power BI, ale keďže nemáme čas, tak budeme musieť použiť náhradné riešenie 🙂

Aktualizácia 20.8.2018: Tak konečne sme sa dočkali, a náhradné riešenie popísané nižšie už nie je potrebné. Kategória údajov už ide nastaviť aj pre merítka. Viac info v tomto článku.

Vytvoríme v dátovom modeli novú tabuľku podľa DAX-ového vzorca, v ktorom použijeme hore uvedené merítko. Za normálnych okolností sa nedá použiť merítko vo vzorcoch pre vypočítané stĺpce, ale keď ide o vypočítanú tabuľku, tak to už ide 🙂 Takže vytvoríme novú vypočítanú tabuľku s názvom „Obraty a stavy“, s nasledujúcim vzorcom:

Obraty a stavy = ADDCOLUMNS(VALUES(‘Čas'[CalendarYear]); “Obrat”; [Obrat]; “Stav”; [Stav])

Výsledok bude vyzerať takto:

Vytvorí nám to tabuľku, kde pre jednotlivé roky z časovej tabuľky bude vypočítaný obrat a stav – pomocou merítok, ktoré už máme v dátovom modeli. Takýmto stĺpcom už potom môžeme nastaviť vlastnosť „Kategorizácia údajov“ na „URL adresa obrázka“ na záložke „Modelovanie“:

Potom už stačí v reportovacom zobrazení iba vytvoriť novú tabuľku alebo maticu, do ktorej pridáme všetky 3 stĺpce z tejto novej tabuľky (alebo len tie, ktoré budete chcieť). Po drobnej úprave formátovania tabuľky bude naše dielo hotové 🙂

Takže, ako vidíte, a ako sa mi to už veľakrát potvrdilo – to, že niečo v Power BI nie je podporované, ešte neznamená, že sa to nedá spraviť. Stačí vedieť zopár DAX-ových fínt a zapojiť svoju kreativitu, a po chvíli tuhého zamyslenia spravíte v ňom všetko. Teda, všetko z reportovacieho hľadiska 🙂 Toto riešenie nie je síce úplne univerzálne, ale keď robíte manažérsku tabuľu, tak na nej nie je zvyčajne viac ako 5-10 takýchto tabuliek. Takže vydržať sa s tým dá. Jedine že by sa Vám chcelo čakať na bližšie nešpecifikovanú ďalšiu aktualizáciu Power BI, ktorá znova sprístupní ukazovatele ako ikony v tabuľkách aj pre merítka 🙂 Tak či inak, ide predsa len o náhradné dočasné riešenie.