Power BI má široké možnosti filtrovania dát v reporte. A takisto má v sebe zabudovaných hneď niekoľko spôsobov podmieneného formátovania. Čo však, ak chcete nastaviť filtrovanie pomocou farieb v podmienenom formátovaní, napr. v kontingenčnej tabuľke či grafe? Čiže vyfiltrovať si iba tie riadky, kde je konkrétna farba? To Power BI priamo zabudované nemá, ale to neznamená, že to nejde spraviť. Ide to, a ide to dokonca aj veľmi ľahko. A na to sa teraz pozrieme.
Podmienené formátovanie pomocou merítka
Ukážeme si to opäť na našom vzorovom súbore Power BI. V tomto prípade vytvoríme takúto kontingenčku:
- do oblasti hodnôt dáme merítko Obrat z tabuľky Objednávky,
- do oblasti riadkov dáme stĺpec CalendarYear z tabuľky Čas.
Výsledná kontingenčka bude vyzerať takto:
A teraz si nastavíme podmienené formátovanie tak, že ak je Obrat menší ako 3 milióny, tak má byť podfarbený červenou farbou, a ak je väčší ako 9 miliónov, tak má byť podfarbený zelenou farbou. Za normálnych okolností by sme to nastavili ako klasické podmienené formátovanie podľa pravidiel, ale teraz budeme musieť ísť na to trochu inak. Najmä preto, aby sme nemuseli dané podmienky opakovať viackrát.
Nastavíme si teda podmienené formátovanie podľa farieb, ktoré budeme počítať pomocou merítka. Pre tento účel vytvoríme takéto merítko:
Farba pre kontingenčku = IF([Obrat] < 3000000; "#FF0000"; IF([Obrat] > 9000000; "#00FF00"))
Toto merítko bude vracať kód farby pri splnení príslušnej podmienky. Kód farby musí byť vo všeobecnosti zadaný v hexadeximálnom formáte. Prvý kód vo vzorci je kód červenej farby, druhý kód je kód zelenej farby.
Potom nastavíme podmienené formátovanie pre pole Obrat v kontingenčke tak, že si otvoríme okno s podmieneným formátovaním, v ňom zvolíme:
- Formátovať podľa: Hodnota poľa,
- Na základe poľa: Farba pre kontingenčku.
Podmienené formátovanie samozrejme zafunguje, a bude to vyzerať takto:
Filtrovanie pomocou farieb v kontingenčke
A teraz by sme chceli spraviť 2 tlačítka vedľa kontingenčky, ktoré budú mať tie 2 farby, a pomocou ktorých by sme si chceli odfiltrovať kontingenčku len na zvolenú farbu. To sa dá spraviť viacerými spôsobmi, napr. cez záložky, alebo cez odpojené slicery. My tentokrát použijeme kvôli flexibilite techniku odpojených slicerov, ktorú nájdete napr. v mojej knihe o Power BI.
Vytvoríme si teda v dátovom modeli novú, ručne zadanú tabuľku. Do nej zadáme takéto údaje:
Túto tabuľku nazveme Farby, a načítame ju do dátového modelu.
Následne vytvoríme v reporte slicer z tejto novej tabuľky Farby, z políčka Popis, a nastavíme mu štýl tlačítok:
Potom si vytvoríme pomocné merítko, ktoré neskôr použijeme na filtrovanie kontingenčky podľa výberu v tomto sliceri. Využijeme pri tom mierne modifikovanú techniku odpojených slicerov. Vzorec bude takýto:
Zobraziť riadok = IF([Farba pre kontingenčku] = SELECTEDVALUE(Farby[Farba]) || SELECTEDVALUE(Farby[Farba]) = BLANK(); "ano"; "nie")
Toto merítko vracia hodnotu “áno”, ak je farba na danom riadku kontingenčky rovnaká ako vybraná farba v sliceri, alebo ak nie je vybraná žiadna farba v sliceri. V opačnom prípade vracia hodnotu “nie”. Mohli by sme síce priamo vracať aj hodnoty true/false, ale Power BI by potom malo psychický problém, pretože nevie filtrovať podľa hodnôt true/false. Tak sme si tam dali svoje “áno” / “nie”. Všimnite si, že to bude fungovať aj napriek tomu že sme do funkcie SELECTEDVALUE použili iný stĺpec ako máme v sliceri. To pri tejto technike môžeme spraviť, pretože to vyplýva z povahy dát, toho čo máme v kontexte výpočtu aj z toho, ako táto funkcia funguje.
Nastavenie filtrovania
Keď to máme, tak prejdeme naspäť na kontingenčku. Klikneme do nej, a vo filtrovacom paneli, v časti “Filtre v tomto vizuáli”, nastavíme filter podľa hodnoty tohto merítka. Presunieme tam teda toto novo vytvorené merítko z ponuky dátového modelu v paneli úplne napravo, rozbalíme toto pole, nastavíme filter na kombináciu “je” a “áno” (čiže rovná sa “áno”), a klikneme na “Použiť filter”:
A teraz si môžeme vyskúšať svoje dielo. Keď klikneme v sliceri na položku/tlačítko “červená”, tak nám to v kontingenčke zobrazí iba riadky vyfarbené červenou farbou:
…a keď klikneme na tlačítko “zelená”, tak nám to v kontingenčke zobrazí iba riadky vyfarbené zelenou farbou:
…a keď nevyberieme žiadnu farbu, tak to zobrazí všetky riadky v kontingenčke. Juchú!
Filtrovanie pomocou farieb tlačítok
A čo keby sme ešte chceli mať tie tlačítka vyfarbené rovnakou farbou, akou filtrujú? To slicery v čase písania tohto článku ešte nevedia. Vieme na to však použiť klasický vizuál tabuľky, pretože ten, tak ako aj väčšina ostatných vizuálov v Power BI, ide použiť aj ako filter. Stačí teda prepnúť typ vizuálu zo sliceru na tabuľku:
Potom nastavíme podmienené formátovanie v tejto tabuľke, pre pozadie poľa Popis, takto:
- Formátovať podľa: Hodnota poľa,
- Na základe poľa: Prvé: Farba.
Výsledok bude vyzerať takto:
No a potom stačí pohrať sa chvíľu v maliarskom valčeku so štýlom tabuľky a jej položiek, vypnúť riadok “Celkovo”, zmeniť alias poľa Popis v tabuľke napr. na “Vyberte farbu:”, a máme dostatočne dobré tlačítka s farbou:
Ktoré fungujú rovnako, ako keby to bol slicer:
A máme hotové to, čo ešte pred chvíľou bolo nemožné 🙂 Filtrovanie pomocou farieb, krásne, čisté, ako z panenskej prírody.
Na záver
Toto riešenie pre filtrovanie pomocou farieb má zároveň výhodu v tom, že je dynamické. Chcete iné podmienky? Stačí zmeniť podmienky vo vzorci merítka “Farba pre kontingenčku”. Chcete zmeniť farby alebo ich počet? Zmeníte ich opäť v tom istom merítku, len nezabudnite dať tie isté kódy farieb aj do tej ručne zadanej tabuľky (údaje v nej zeditujete/zmeníte podľa tohto návodu). A to je všetko. Naozaj všetko. A stačili na to dokonca základné znalosti z jazyka DAX a reportingu v Power BI, ktoré už učím roky na “základnom” kurze Power BI, plus trocha predstavivosti. Každopádne, vidíte, že stačí použiť základné prvky z Power BI a 2 vzorce v jazyku DAX, a to, čo je nemožné, ide nakoniec spraviť celkom ľahko 🙂
Autor, tréner a expert na Power BI, PowerPivot a jazyk DAX. Založil som tento web, aby som pomohol dostať Power BI do širšieho povedomia, a aby som ľuďom ukázal, že moderný a komplexný reporting ide vyriešiť rýchlo a jednoducho. Po nociach vzývam Majstra Yodu a tajne plánujem ovládnutie vesmíru.
wau, funguje to….googlil som pár hod a nevedel som nikde nájsť tip na filter pre podmienené formátovanie. Vďaka Michal za inšpiráciu, veľmi pomohlo.
Vďaka aj ja za komentár, rado sa stalo 😉