Ako na ikonky v reportoch Power BI bez potreby obrázkov na web serveri

V starších článkoch aj vo svojej knihe o Power BI som už písal o tom, ako zobraziť ikonky v tabuľkách a kontingenčkách v reportoch Power BI. Je to síce oficiálny spôsob, ale vyžaduje to, aby ste nahrali všetky takéto obrázky dopredu na nejaký webový server, odkiaľ sa budú potom zobrazovať v reporte. Čo však, ak si to nemôžete dovoliť? Prípadne nie ste grafik, alebo neviete, odkiaľ máte zohnať tie ikonky? V tom prípade existuje ešte oveľa jednoduchšie, geniálnejšie riešenie, ako to spraviť aj bez toho. A využiť poklady, ktoré máte schované v počítači.

Postup bude rovnaký, ako v predchádzajúcom článku. Použijeme náš vzorový súbor Power BI, a vyskladáme si z neho tabuľku, kde:

  1. na riadkoch budú roky – stĺpec CalendarYear z tabuľky Čas,
  2. vedľa rokov bude zobrazené merítko Obrat z tabuľky Objednávky,
  3. vedľa Obratu bude zobrazené merítko Obrat pred rokom, ktoré si vyrobíme nižšie.

Merítko “Obrat pred rokom” bude mať takýto vzorec, ako som písal už v tomto článku:

Obrat pred rokom = IF(HASONEVALUE(‘Čas'[CalendarYear]); CALCULATE([Obrat]; DATEADD(‘Čas'[DateKey]; -1; YEAR)))

Bude to vyzerať takto:

A teraz by sme chceli ikonkou, resp. smerovými šípkami, zobraziť medziročné smerovanie. Čiže ak obrat medzi rokmi rástol, tak bude zobrazený šípkou hore, ak klesal, tak šípkou dole, a ak bol rovnaký, tak rovnou šípkou. Tentokrát však nemáme nahraté žiadne obrázky na webovom serveri.

V tomto prípade využijeme to, že merítka vedia vracať ľubovoľné hodnoty, a teda aj textové hodnoty. To už asi dávno viete.

Čo však tiež viete, ale nepoužívate, je to, že text v tabuľkách v Power BI sa dá formátovať. A viete vybrať iný font. Napríklad font Wingdings, ktorý je v každom jednom Windowse už od 90-tych rokov, a je to ten klasický ikonkový font. Jeho nevýhodou je ale to, že obsahuje “iba” niekoľko stoviek ikoniek. A to nie je úplne adidas.

Preto využijeme ďalšiu fintu, o ktorej už asi neviete. Najpoužívanejšie fonty vo Windows majú okrem bežných znakov v sebe zadefinované aj ďalšie znaky. Okrem latinky, azbuky, čínštiny či arabského písma, obsahujú aj tisíce ďalších obrázkov. Je to vďaka tomu, že tieto fonty sa snažia nasledovať definíciu Unicode, ktorá všetky tieto prkotiny definuje ako štandard. Lebo nové písma asi už nevznikajú, takže treba niečo vykazovať…

Ak chcete vidieť najpoužívanejšie symboly, či zistiť ich kódy, ktoré neskôr použijete v reporte Power BI, tak si môžete otvoriť povedzme túto stránku:

https://unicode-table.com/en/sets/arrows-symbols/

Stránka vyzerá nejak takto:

Tam vidíte hromadu šípok a kadejakých ďalších symbolov. Všimnite si na obrázku napravo aj to menu, kde sú nielen šípky, ale aj smajlíky, hviezdičky, aj kadečo ďalšie. A keby ani to nestačilo, tak v hlavnom menu stránky je odkaz na komplet celý Unicode…

Ako to ale dostať do reportu Power BI?

Spravíme si merítko. Toto bude zobrazovať šípku smerom nahor, ak je suma Obratu väčšia ako Obrat pred rokom, prípadne nadol, ak je menšia. Na to si budeme potrebovať buď zistiť kódy znakov, alebo si tie znaky nakopírovať priamo do vzorca (ale to editor nie vždy psychicky zvládne).

Spravíme teda takéto merítko:

Stav = IF([Obrat pred rokom] <> BLANK(); IF([Obrat] > [Obrat pred rokom]; “↗”; IF([Obrat] < [Obrat pred rokom]; “↘”; “→”)))

Znaky si prekopírujte jednoducho z tej stránky. Nie všetky z nich to však Power BI zvláda zobraziť. Takže ak vám Power BI v reporte pre ten znak zobrazí iba okienko, tak buď zmeňte font v tabuľke, alebo vyskúšajte iný znak.

Po pridaní merítka do reportu to bude vyzerať takto:

Prípadne po rozbití štatistiky na jednotlivé mesiace (stĺpec MonthName z tabuľky Čas), to bude vyzerať takto, a uvidíte už aj šípky smerom dole:

A ak to chcete farebne, tak si zapnite na ten text podmienené formátovanie, napr. takéto:

Alternatívne sa dajú tieto znaky zobraziť aj cez funkciu UNICHAR. Táto funkcia na vstupe berie kód znaku podľa špecifikácie Unicode, a na výstupe vracia daný znak. V našom prípade to isté merítko vieme zapísať pomocou funkcie UNICHAR takto:

Stav = IF([Obrat pred rokom] <> BLANK(); IF([Obrat] > [Obrat pred rokom]; UNICHAR(8599); IF([Obrat] < [Obrat pred rokom]; UNICHAR(8600); UNICHAR(8594))))

Kódy znakov zistíte na tej stránke, alebo aj na hocijakej inej. Do funkcie UNICHAR musíte zadať číslo znaku v decimálnej, čiže normálnej reprezentácii – nie hexadecimálnej. Na tejto stránke sa to dá zistiť napr. tak, že skopírujete daný znak do schránky, prilepíte ho do vyhľadávacieho poľa navrchu stránky, a rozkliknete si podrobnosti vyhľadaného znaku:

…a na tejto stránke choďte úplne na spodok, kde si v tabuľke dole nájdite druhý riadok, v ktorom bude daný kód znaku:

Ten už iba dosadíte do funkcie UNICHAR.

Takže takto viete použiť hromadu obrázkov v reportoch Power BI, bez toho, aby ste čokoľvek špeciálne nastavovali či uploadovali. Pretože týmto de facto zobrazujete iba text. Nie je to síce ideálne, ale ak vám to vyhovuje, tak to stačí. Táto finta sa mimochodom používala ešte v dobe, keď Power BI nevedelo zobrazovať ikonky v tabuľkách ako obrázky. Teraz sa používa vtedy, keď nemáte čas, alebo vyrábať dostatočne dobré obrázky do reportov. Prípadne ak ich nemáte kam zavesiť tak, aby to fungovalo nielen pre vás, ale aj pre všetkých používateľov reportu. Navyše to má výhodu oproti obrázkom v tom, že je to vykreslené ako vektorová grafika – a teda môžete to zväčšiť aj tisíckrát, a narozdiel od obrázkov to bude stále dokonale ostré. A to je celkom super vec 🙂