Ako zobraziť iba použité hodnoty v sliceri, v PowerPivote aj Power BI

Slicery sú fajn na rýchle filtrovanie údajov. Keď sú však vytvorené z inej tabuľky ako tej, ktorú filtrujú, tak sa vám občas stane, že je v nich zobrazených viac hodnôt, ako je použitých v tej filtrovanej tabuľke. A ak chcete zobraziť iba použité hodnoty v sliceri, tak na to existujú hneď 2 jednoduché riešenia.

Prečo zobrazovať iba použité hodnoty v sliceri

Riešenie si opäť ukážeme na našom vzorovom súbore PowerPivotu, resp. Power BI. Vytvoríme si takúto kontingenčku:

  1. do oblasti hodnôt dáme merítko Obrat z tabuľky Objednávky,
  2. do oblasti riadkov dáme stĺpec CalendarYear z tabuľky Čas.

Výsledná kontingenčka bude vyzerať takto:

Teraz by sme chceli pridať vedľa nej slicer, vytvorený zo stĺpca Color v tabuľke Produkty, aby sme mohli rýchlo filtrovať túto kontingenčku podľa farieb produktov. Po jeho pridaní to bude vyzerať nejak takto:

Všetky hodnoty, a nie iba použité hodnoty v sliceri

Slicer samozrejme funguje ako má, len to má drobnú chybičku krásy. Zobrazuje nám všetkých 10 farieb z toho stĺpca, z ktorého bol vytvorený. Keď si však spravíme samostatnú kontingenčku, kde budú obraty podľa farieb, tak zistíme, že v Objednávkach je z toho použitých len 8 farieb:

Inak povedané, predali sa len produkty v 8 farbách. A my by sme teraz v tom sliceri vyššie chceli užívateľovi zobraziť iba tieto hodnoty. Čiže iba použité hodnoty zo stĺpca Produkty[Color], ktoré majú nejaké príslušné objednávky v tabuľke Objednávky.

Začiatočnícke riešenie

Prvé riešenie je veľmi jednoduché. Vytvoríme v tabuľke Objednávky nový vypočítaný stĺpec s názvom “Farba produktu”, do ktorého si dotiahneme príslušnú hodnotu zo stĺpca Produkty[Color] pre každú objednávku. To spravíme takýmto vzorcom, cez starú známu funkciu RELATED:

Farba produktu = RELATED(Produkty[Color])

Následne zrušíme ten pôvodný slicer, a namiesto neho vytvoríme slicer z tohto nového stĺpca. A bude v ňom vidieť iba použité hodnoty:

Iba použité hodnoty v sliceri - prvé riešenie

Rýchle riešenie, a vo väčšine prípadov postačujúce. Má len jednu nevýhodu – zväčší vám to veľkosť dátového modelu, v pamäti aj vo výslednom súbore. O koľko, to závisí od toho, či sa podarí ten stĺpec dobre skomprimovať alebo nie. Presné čísla zistíte cez Power BI Analyzer. Vo väčšine prípadov sa to však podarí, a nárast veľkosti súboru by mal byť zanedbateľný.

Profesionálne riešenie

Druhé riešenie je profesionálnejšie v tom, že nemusíte na to vytvárať vypočítaný stĺpec, ale bude stačiť merítko. Ktoré nezaberá žiadne miesto v pamäti, a teda ani nezväčšuje súbor. Jedinou nevýhodou bude to, že to funguje iba v Power BI.

Spravíme si teda slicer znova z toho pôvodného stĺpca Color v tabuľke Produkty, ktorý bude zobrazovať všetkých 10 hodnôt. Následne využijeme základnú funkcionalitu Power BI, kde každý vizuál ide filtrovať, dokonca aj pomocou výsledkov z merítka. Vytvoríme teda merítko, ktoré, keď ho použijeme v sliceri či tabuľke, bude počítať počet existujúcich riadkov v tabuľke Objednávky:

Počet objednávok := COUNTROWS('Objednávky')

Keď teraz budeme chcieť pridať toto merítko do slicera, tak to samozrejme nepôjde – v sliceri môžu byť iba stĺpce. My ho však budeme potrebovať iba na filtrovanie slicera, takže ho bude potrebné pridať iba do filtrovacieho panela. Predtým si to však zvizualizujeme v kontingenčke, aby sme uvideli, čo to počíta.

Ako to funguje

Zmeníme teda vizuál slicera na vizuál kontingenčky, a pridáme do nej teraz to merítko “Počet objednávok”. Plus dáme natvrdo zobraziť všetky riadky v kontingenčke. Zobrazí nám to všetky farby produktov, plus počet objednávok k nim:

Tam uvidíte, že ku 2 farbám neexistujú žiadne objednávky, a teda tieto 2 ani nechceme zobraziť vo výslednom sliceri. Takže podľa tohto budeme môcť o chvíľu filtrovať aj položky v sliceri, pretože na pozadí je to de facto to isté, ako keby to bolo v takejto kontingenčke.

Prepneme teda vizuál tejto kontingenčky naspäť na slicer (merítko “Počet objednávok” sa odstráni pri tom samo). Potom pridáme merítko “Počet objednávok” do filtrovacieho panelu, do oblasti “Filtre v tomto vizuáli”, a nastavíme filter nad týmto merítkom na podmienku “je väčšie ako 0”:

Čo nám vyfiltruje výsledný slicer len na tých 8 farieb, pre ktoré existujú záznamy (objednávky) v tabuľke Objednávky:

Iba použité hodnoty v sliceri - druhé riešenie

Výhoda tohto riešenia je v tom, že nemusíte zapratávať dátový model vypočítanými stĺpcami a zbytočne ho zväčšovať. Najmä ak by ste chceli mať vo výslednom reporte viacero takýchto slicerov. Prvé riešenie by pre každý slicer vyžadovalo vytvoriť osobitný vypočítaný stĺpec. Toto druhé riešenie možno použiť pre všetky slicery naraz, s tým istým merítkom a tou istou filtrovacou podmienkou. A ako hovoria v teleshoppingu, tak to sa oplatí 🙂

Iba použité hodnoty v sliceri ľahko a rýchlo

Takže takto jednoducho sa dajú zobraziť iba použité hodnoty v sliceri. Prvé riešenie funguje v excelovskom PowerPivote aj v Power BI, a druhé len v Power BI. Obe majú svoje pre aj proti, ale podstatné je, že to ide spraviť, a že to ide spraviť v oboch prípadoch rýchlo a jednoducho 🙂