Kaskádovité slicery v PowerPivote a Power BI

Slicery sú bombastická vec, či už v Exceli alebo v Power BI. Umožňujú vám rýchlo odfiltrovať dáta v reporte, interaktívne parametrizovať dátový model, či dokonca interaktívne meniť vzhľad reportu. Problém však nastáva pri použití viacerých slicerov voči PowerPivotu či Power BI, keď užívatelia zvyknutí na klasické kontingenčky očakávajú, že keď v jednom sliceri zakliknú položku X, tak sa to v ostatných sliceroch kaskádovito obmedzí len na tie položky, ktoré existujú pri tom vybranom filtri. V klasických kontingenčkách to funguje vždy, ale v kontingenčkách z PowerPivotu, resp. v Power BI to nefunguje takmer nikdy. Aspoň teda nie bez dodatočných nastavení. Preto si teraz ukážeme, ako rozchodiť takéto kaskádovité slicery.

Riešenie si ukážeme na našom vzorovom súbore Power BI. Povedzme, že máme nasledujúci report, kde chceme, aby nám fungovali kaskádovité slicery:

  1. kontingenčku s merítkom Obrat zobrazenom po jednotlivých menách (stĺpec CurrencyName z tabuľky Meny),
  2. slicer podľa stĺpca ProductCategoryName z tabuľky Kategórie,
  3. slicer podľa stĺpca ProductSubCategoryName z tabuľky Podkategórie.

Celé to vyzerá napr. nejak takto:

Keď teraz zaklikneme v prvom sliceri kategóriu Bikes, tak sa nám správne odfiltruje kontingenčka len na tú kategóriu, a súčasne aj druhý slicer iba na príslušné podkategórie:

Funguje to kvôli tomu, že tabuľky Kategórie, Podkategórie a Objednávky sú medzi sebou prepojené, a teda filter aplikovaný slicerom na tabuľku Kategórie sa automaticky aplikuje aj na tabuľku Podkategórie (a obmedzí položky v 2. sliceri, ktorý je z nej vytvorený), a zároveň aj na tabuľku Objednávky, čo spôsobí odfiltrovanie kontingenčky.

Teraz si pridáme do reportu ešte ďalší slicer, tentokrát z tabuľky Čas a stĺpca CalendarYear:

Potom v prvom sliceri zaklikneme kategóriu Accessories, čiže “príslušenstvo”. Druhý slicer aj kontingenčka sa následne odfiltrujú správne. Tretí slicer však ostane bezo zmeny:

Keď si niekde bokom spravíte kontingenčku, kde bude to isté merítko Obrat, a stĺpce CurrencyName a CalendarYear, na tej istej strane reportu (kde sa na to budú aplikovať výbery v sliceroch), tak to bude vyzerať takto:

Tam si všimnite, že predaje pre Accessories existujú iba pre rok 2003 a 2004. A užívateľ, ktorý už pozná svoje dáta, by logicky očakával, že v sliceri s rokmi sa mu zobrazia iba tieto 2 roky, keď má zakliknutú kategóriu Accessories, a nie všetky štyri roky.

Čím to je, že to nefunguje?

Keď sa pozriete na prepojenia medzi tabuľkami, tak zistíte, že všetky tabuľky medzi sebou sú prepojené:

Takže kaskádovité slicery by fungovať mali. Problém je ale v tzv. propagácii filtrov, resp. v smere prúdenia filtrov, o ktorom píšem v mojej knihe o Power BI. Filtre z tabuľky Kategórie a Podkategórie sa dostanú po tabuľku Objednávky, ale už nie do tabuľky Čas, z ktorej je vyrobený 3. slicer. A preto to ani nefiltruje výber položiek v tom 3. sliceri.

Riešenie je nastaviť prepojenie medzi tabuľkami Objednávky a Čas na obojsmerné prepojenie. Spravíte to tak, že 2x poklikáte na tú šípku prepojenia, a v novo otvorenom okne, vpravo dole, nastavíte roletku “Smer krížového filtrovania” na možnosť “Oba“:

Po stlačení tlačítka OK a prejdení naspäť do reportu to už bude fungovať správne:

A vysvetlenie? Nájdete ho v mojej knihe o Power BI 🙂 Nejak predsa tie svoje miliardy musím zarobiť, nie? 🙂

Takže takto viete v Power BI rozbehať kaskádovité slicery. Ide to spraviť aj v SSAS Tabulare 2016 a novších. A dokonca aj v excelovskom PowerPivote, len musíte mať aspoň Excel 2016 a trochu trpezlivosti s neoficiálnym hackovaním dátového modelu. Pretože napriek tomu, že je tam 3. generácia PowerPivotu, ktorá to vie spraviť, tak Microsoft stále nedal do Excelu možnosť to tam nastaviť. Snáď sa to zmení v Exceli 2019, kto vie… Každopádne, teraz už viete, ako sa to dá spraviť, a prečo prejsť na čo najnovšiu verziu PowerPivotu či Power BI. Lebo aj zložité veci potom idú robiť takto jednoducho 🙂