Přejdi na obsah Přejdi na navigaci

ÚvodBlogRozcestník reportů v Power BI

Rozcestník reportů v Power BI

Power BI umožňuje přistupovat k reportům na základě workspaces, což nemusí být vždy praktické a především přehledné. Z těchto důvodů jsme obdrželi požadavek na tvorbu vlastního rozcestníku reportů v Power BI. Z tohoto rozcestníku by mělo být možné se prokliknout do příslušného reportu. Reporty by v rozcestníku měly být přehledně strukturované podle oddělení nebo logických celků. Celé řešení by mělo respektovat pravidla zabezpečení na úrovni reportů nebo celých oddělení. Podobný požadavek jsme kdysi implementovali v nástroji IBM Cognos a jeho realizace byla klienty často poptávána.

rozcestník

Rádi bychom se s vámi podělili o poznatky a zajímavou myšlenkovou cestu, která vedla ke zhotovení výsledného řešení. Jak se nám výsledek vydařil můžete vidět na úvodním obrázku.

Příprava zdrojového souboru

Prvním krokem v procesu vývoje rozcestníku byla příprava zdrojového souboru se seznamem reportů. V tento moment už jsme měli zjištěno, že nejvhodnějším typem vizuálu pro naše účely bude matrix tabulka, která nám jako jediná umožní dynamicky vypisovat hodnoty v pomyslných souřadnicích mřížky. Zdrojový soubor proto obsahoval následující sloupce:

rozcestník02

Takováto struktura nám stačí pro základní test, zda se podaří reporty rozdistribuovat do mřížky. Naimportovali jsme tabulku do PowerBI, přidali jsme dvě další tabulky – tabulka Row (s jediným sloupcem Row ID a hodnotami {1,2,3}) a tabulka Col (s jediným sloupcem Col ID a hodnotami {1,2,3,4}), viz obrázek níže.

 

rozcestník03

Pokud zachováme jmenné konvence v uvedené podobě, automaticky se vytvoří vazby mezi tabulkami v podobě, kterou potřebujeme.

Výběr a nastavení vizuálu

Následně jsme zkusili v tabulce typu matrix rozložení reportů do mřížky. Test probíhal následovně: do řádků matrixu jsme vložili Report Group a Row ID, do sloupců Col ID. Do samotných hodnot jsme vložili Report Name (kde se nám automaticky zobrazuje první hodnota). Jak lze vidět níže, test dopadl úspěšně.

rozcestník04

Když přidáme do datového zdroje ikonku ve formátu base64 (pole Icon hodnota base s prefixem: „data:image/jpeg;base64,“ a sloupci nastavíme data category „image URL“), může výstup vypadat například takto:

rozcestník05

Nyní už řešení vypadá výrazně lépe. Ještě nás ale čeká několik dalších kroků.

Interaktivní odkazy rozcestníku

V tuto chvíli nás především zajímá, jestli bude u obrázku a názvu reportu možné nastavit odkaz k prokliknutí. Připravili jsme si tedy ve zdrojových datech nový sloupec s URL k danému reportu. Pro otestování nám stačí jakákoliv validní URL, viz ukázka. Důležité je nezapomenout nastavit Data category „Web URL“.

rozcestník06

Pokud URL nastavíme na oboje – obrázek i název reportu, zjistíme, že se název reportu podtrhne, což se pro náš rozcestník nehodí. Možnost podtržení odebrat bohužel není dostupná.  Zapátrali jsme tedy po jiných možnostech, jak zobrazit obrázek spolu s textem, ideálně s možnostmi pokročilého stylování.

Ikony rozcestníku

Dále jsme se zaměřili na ikonku. Snažili jsme se ji přidat v podobě SVG (Scalable Vector Graphic). Cílem bylo, aby se do tabulky vkládala validní definice SVG. To proto, aby bylo možné ikony řídit centrálně v mapovací tabulce.

rozcestník07

Dalším důvodem bylo, aby bylo možné v samotné DAX metrice řídit jednotně logiku změny barvy a také nezbytného prefixu “data:image/svg+xml;utf8”. Hotové metrice je dále nutné nastavit Data category na hodnotu „Image URL“.

rozcestník08

V tuto chvíli jsme se vrátili k názvům reportů. Zaměřili jsme se na SVG definicí obrázku a název reportu k němu přímo přidali. A abychom to dělali jednotně, nastavili jsme to přímo v DAX metrice, kde se přidává do SVG definice foreignObject před ukončovací </svg> tag.

<foreignObject x=’-50%’ y=’110%’ width=’200%’ height=’50%’ style=’text-align:center’>

<div xmlns='http://www.w3.org/1999/xhtml'>Název reportu</div>

<foreignObject>

Tím se zajistí i nativní zalamování delších názvů reportů. Zde se dá případně i nastavit jednotná barva textu, aby odpovídala barvě ikony. To vzhledem k barevnému spektru ikon v našem případě nebylo žádoucí. Mezivýsledek je možné vidět na obrázku níže.

rozcestník09

Nyní, když nastavíme Web URL, bude už možné kliknout na obrázek i nadpis a proklik bude fungovat v obou případech.

rozcestník10

rozcestník09

Následně jsme se zaměřili na barvu ikonky podle skupiny reportů. K tomuto účelu jsme do zdrojové tabulky přidali sloupec Icon Color a vložili hexa kód příslušné barvy.

rozcestník12

Jako další krok jsme upravili metriku a nahradili defaultní odstín barvy všech ikonek barvou vyplněnou v řídící tabulce.

rozcestník13

Výsledek už vypadá moc pěkně. Stačí už jen doplnit správné URL k vašim reportům.

Testování rozcestníku

Následně jsme se pustili do testování. Na několika reportech jsme vyzkoušeli, že prokliky fungují a že nás opravdu odkazují na správný report. Pak přišly na řadu pokročilejší scénáře.

Co se stane, když některý z uživatelů nebude mít oprávnění na některou z oblastí reportů? Při přístupu pouze k reportům v oblastech Management, Operations a Sales, vidí uživatel pohled uvedený níže.

rozcestník14

Vidíme, že chování je v pořádku.

Pokud se ale podíváme na druhý scénář, kde uživatel nemá mít oprávnění na některé reporty z dané skupiny, pak již výsledek nevypadá dobře. To lze vidět na obrázku uvedeném níže.

rozcestník15

Odfiltrováním některých reportů dojde k vytvoření mezer a přestávají být patrné příslušnosti ke skupinám. Toto není chování, které očekáváme. Cílem je, aby se reporty za všech okolností řadily zleva doprava, shora dolů. Nezbývá tedy, než pozici X a Y pro umístění reportů počítat dynamicky až po filtraci zobrazované množiny reportů.

Abychom toho dosáhli, kompletně jsme matrix předělali. Tabulky Col a Row jsme zrušili a ze zdrojového souboru jsme odebrali sloupce Row_ID a Col_ID. V novém řešení se pozice X a Y se počítá dynamicky ve virtuální tabulce pomocí DAX metriky. Kalkulace Y pozice probíhá následovně: po aplikaci row-level security funkcí RANKX očíslujeme zbylé reporty v každé skupině, takto získané číslo vydělíme maximálním počtem sloupců. Z výsledku si ponecháme jen celé číslo – tedy to, co je před desetinnou čárkou a přičteme 1, protože jinak by číslování začínalo od 0. Kalkulace X pozice se počítá obdobně, jen je číslování pomocí funkce RANKX vztažená nejen ke skupině reportů, ale také k číslu řádku, který jsme spočítali v předchozím kroku. Výsledkem je dynamické přiřazování pozice X a Y každému reportu po každé filtraci reportů, a tedy přeskládání rozložení ikonek v matrix tabulce.

Výsledkem je pak chování, které jsme si přáli, jak lze vidět v ukázce.

rozcestník16

Je nutné dbát na to, že stejným způsobem je potřeba napočítat i URL k příslušné pozici (a se stejnou logikou číslování jako u ikonek, aby URL nevedla k jinému reportu, než je uvedeno v názvu). Pro tento účel je nutné ještě nachystat specificky i obdobnou metriku, která místo obrázku vrací URL.

Výhodou tohoto řešení je možnost libovolně měnit rozložení ikon v rámci mřížky. Je tedy velmi jednoduché uspořádat ikonky do struktury 3x3, 4x2, 5x1 apod.

Například 2x4

rozcestník17

Nebo 3x3 (třetí řádek se vykreslí až tehdy, budou-li předchozí dva plně zaplněny a bude-li existovat report, který lze do třetího řádku umístit)

rozcestník18

 

Nebo 7x2 (druhý řádek se v tomto případě nikdy nezobrazí, protože v žádné skupině není více než sedm reportů).

rozcestník19

Dále je možné přidat metriku, kterou se automaticky počítá počet skupin reportů, které se vejdou do jednoho vizuálu pod sebe při nastavení mřížky X na Y. Pak je možné zobrazovat reporty ve dvou matrixech vedle sebe, například takto:

rozcestník20

Toto je nastavení, které se nám z hlediska designu zdá optimální. Výpočet počtu řádků reportů jsme si zajistili dynamicky podle maximálního počtu reportů v dané skupině. Nesmí se totiž stát, aby nám pro report chybělo okénko ve finální mřížce. Takto připravený report pak už stačí napojit na logiku filtrace reportů podle oprávnění uživatelů k reportům či skupinám reportů.

Doplníme ještě pár tipů

Závěr

Ukázali jsme si, že s trochou představivosti lze v Power BI dosáhnout celkem zajímavých funkcionalit a vytvořit si vlastní navigační stránku s možností další rozšíření a customizací. Líbí se vám výsledek? Využili byste ho ve vaší společnosti také? Chcete si podobný rozcestník vytvořit také, ale zasekli jste se v některém z kroků? Nebo chcete poskytnout některou z jmenovaných DAX metrik? Ozvěte se nám.

Máte zajímavý námět, co byste rádi implementovali, ale zdá se, že to v Power BI nelze? Nebo co vám v reportech chybí, nevyhovuje nebo nemá dostatečné možnosti nastavení? Pošlete nám vaše náměty i nápady a třeba najdete řešení v našem příštím příspěvku.

 

Chci více informací o rozcestníku reportů v Power BI.

Chci vědět více

 

Autor: Tomáš Němeček
oddělení Power BI
tomas.nemecek@dolphinconsulting.cz

Tomáš

Zpět na výpis rubriky