Cílem příkladu v tomto příspěvku je vytvořit Power BI report, kde si uživatel bude moci sám pomocí parametru zvolit, kolik nejlepších produktů chce ve vizuálu zobrazovat. Pomocí číselného parametru v průřezu si tak uživatel může zafiltrovat pouze ty nejlepší produkty ve vybrané kategorii, ve zvoleném obchodě nebo nejúspěšnější produkty v každém roce. Pokud jako kategorie použijeme například roky, výsledek příkladu může vypadat následovně.
Ve vizuálu Matice jsou v řádcích roky a názvy produktů a v hodnotách suma prodejů. Přestože v každém roce bylo prodáváno velké množství produktů, ve vizuálu jsou pro každý rok jsou zobrazeny pouze tři produkty s největšími tržbami. Pokud by chtěl vidět uživatel více produktů, stačí změnit hodnotu v průřezu pod tabulkou.
V řádcích souhrnů s roky je suma prodejů pouze za produkty, které jsou zobrazené v tabulce pro daný rok. Stejně tak celková suma v řádku Total odpovídá sumě hodnot pouze těch produktů, které jsou zobrazené v tabulce, a ne celkovým prodejům všech produktů v databázi.
Celé řešení se skládá ze čtyř jednoduchých kroků, které jsou popsané v samostatných částech v následující části příspěvku. Soubor s řešeným příkladem je k dispozici ke stažení níže pod tímto příspěvkem.
Vytvoření pořadí podle sumy prodejů
Měřítko:
Ve výchozím stavu jsou ve vizuálu Matice v řádcích roky a názvy produktů, a v hodnotách měřítko [Prodeje], které vrací sumu za prodané produkty v aktuálním kontextu vyhodnocení.
K vytvoření měřítka s pořadím podle prodejů použijeme funkci RANKX(). Samotné měřítko pak může vypadat následovně.
Měřítko:
Prvním argumentem funkce RANKX() je tabulka s jedním sloupcem, ve kterém jsou názvy produktů zobrazené v řádcích vizuálu. Právě na základě těchto produktů chceme vytvořit pořadí v závislosti na sumě prodejů. Druhým argumentem funkce RANKX() je proto měřítko [Prodeje], které se vyhodnotí pro každý řádek tabulky v prvním argumentu, a na základě kterého funkce RANKX() vrátí pořadí aktuálního produktu zobrazeného ve vizuálu. Pokud takto vytvořené měřítko vložíme do připravené tabulky, výsledek vypadá následovně.
Častou chybou při použití funkce RANKX() je vynechání funkce ALLSELECTED(), případně funkce ALL() v prvním argumentu funkce RANKX(). Pokud bychom do prvního argumentu funkce RANKX() vložili pouze název tabulky bez funkce ALLSELECTED(), výsledkem měřítka by byla hodnota 1 v každém řádku, protože tabulka 'Product' by bez funkce ALLSELECTED() byla v každém řádku vyhodnocena v kontextu filtru daného produktu. Více informací o funkci RANKX() můžete najít v samostatném příspěvku.
Vytvoření parametru
Druhým krokem je vytvoření parametru, který bude sloužit jako přepínač pro počet zobrazených produktů. Na kartě "Modelování" v rozevíracím seznamu tlačítka "Nový parametr" vybereme možnost "Číselný rozsah".
Následně se otevře dialogové okno, ve kterém postupně vyplníme název parametru, datový typ, počáteční a koncovou hodnotu a hodnotu přírůstku. Pokud zatrhneme možnost "Přidat průřez na tuto stránku", Power BI při vytvoření parametru rovnou vytvoří také průřez se sloupcem z nového parametru, který vloží na aktuální stránku.
Výsledkem parametru není nic jiného než nová tabulka, která obsahuje sloupec s číselnou řadou podle argumentů, které jsme zadali v dialogovém okně. V této tabulce je také automaticky vytvořené měřítko, které vrací aktuálně vybranou hodnotu v průřezu nově vytvořeného parametru.
Pokud jsme v dialogovém okně při vytváření nového parametru nechali vybranou možnost "Přidat průřez na tuto stránku", nový průřez s parametrem by nyní měl být umístěný někde v prostoru reportu.
V této chvíli ještě nový průřez s parametrem nijak neovlivňuje zobrazené hodnoty v tabulce. Parametr nejdříve musíme zahrnout do výpočtů, které budou zobrazené produkty v použitém vizuálu ovlivňovat.
Vytvoření pomocného měřítka pro filtr vizuálu
Měřítko:
Logický výraz INT([Pořadí produktů] <= [Počet produktů Value]) vrací hodnotu 1, pokud je pořadí produktu v daném kontextu menší nebo rovno hodnotě, kterou uživatel vybere v průřezu. Pokud je pořadí produktu vyšší než hodnota parametru vybraná uživatelem v průřezu, návratová hodnota bude 0.
Výpočet chceme provádět pouze pro produkty a roky, ve kterých došlo k prodejům. Proto ve funkci IF() před vyhodnocením hlavního výpočtu ověříme, zda je v daném kontextu hodnota měřítka [Prodeje] větší než 0.
Výsledek výpočtu je možné vidět na obrázku níže.
V průřezu je vybrána hodnota 3. Výsledek měřítka [Zobrazit produkt] je hodnota 1 pro produkty, které mají výsledek měřítka [Pořadí produktů] menší nebo rovno hodnotě 3. Hodnotu 0 pak mají produkty, které mají pořadí vyšší než 3. Nyní stačí přesunout měřítko [Zobrazit produkt] z vizuálu do filtru vizuálu v postranním panelu.
Vytvoření filtru zobrazovaných produktů
Před vytvořením filtru je nutné mít označený vizuál, pro který filtr vytváříme. Následně do volného pole vložíme měřítko [Zobrazit produkt], viz obrázek níže.
Protože měřítko [Zobrazit produkt] vrací hodnotu jedna pro produkty, které chceme zobrazit, nastavíme filtr na hodnotu 1, viz obrázek níže. Po nastavení filtru klikneme na tlačítko "Použít filtr.
Nyní můžeme z vizuálu tabulky odebrat přebytečné sloupce s měřítky [Pořadí produktů] a [Zobrazit produkt]. Výsledek pak může vypadat následovně.
Výsledkem je report, ve kterém si uživatel může na základě parametru zvolit, kolik chce vidět produktů v jednotlivých letech, v závislosti na sumě prodejů.
Další příklady můžete najít na stránce DAX - Příklady nebo na stránce Power BI.
Komentáře
Okomentovat