V jazyku DAX jsou od roku 2024 k dispozici informativní funkce, které sloučí k načítání metadat modelu. Všechny INFO funkce vrací tabulky, se kterými ale můžeme dále manipulovat pomocí standardních DAX funkcí. V tomto příspěvku si na jednoduchých příkladech ukážeme, jak se INFO funkce používají a k čemu mohou být dobré.
Všechny INFO funkce vrací tabulky a můžeme je používat v kombinaci s ostatními DAX funkcemi. INFO funkce se primárně používají při psaní DAX dotazů, protože až na čtyři výjimky není jejich použití v měřítku, v počítaném sloupci nebo v počítané tabulce oficiálně podporováno.
Pokud na kartě Zobrazení dotazů DAX napíšeme za klíčové slovo EVALUATE slovo INFO, uvidíme v kontextové nabídce všechny INFO funkce seřazené abecedně.
INFO funkce, které můžeme bezpečně používat také v počítaném sloupci, v měřítku anebo v počítané tabulce, mají v názvu na druhém místě za klíčovým slovem INFO slovo VIEW.
Jak můžeme vidět na obrázku výše, funkce INFO.VIEW jsou čtyři. Jak z názvu těchto funkcí vyplývá, jedná se o funkce, které vrací informace o tabulkách, sloupcích, relacích a měřítcích. Tyto funkce vrací, oproti všem ostatním funkcím, srozumitelněji strukturované informace, které můžeme přímo použít pro dokumentaci aktuálního modelu, například pomocí počítaných tabulek.
Zbylé INFO funkce pak vrací někdy detailnější informace, ale obvykle obsahují místo názvů některých atributů pouze ID hodnoty těchto atributů, a jejich názvy získáme až při propojení s ostatními INFO funkcemi, například pomocí DAX funkce NATURALINNERJOIN().
V následující části příspěvku si ukážeme příklady použití INFO funkcí v rámci DAX dotazů.
Příklady použití DAX INFO funkcí v Power BI
V následujících příkladech budeme pracovat s modelem Adwenture Works 2020, který navíc obsahuje výpočty z článku Analýza chování zákazníků. Všechny DAX dotazy tedy budou vracet metadata z tohoto modelu, nicméně stejné dotazy si čtenář může zkopírovat a spustit ve vlastním Power BI souboru a získat tak aktuální informace o svém modelu.
Zobrazené výsledky DAX dotazů mohou být pro účely tohoto příspěvku zkráceny. Kompletní výsledky budou k dispozici v přiloženém souboru po spuštění jednotlivých DAX dotazů.
V prvním DAX dotazu bude použita funkce INFO.VIEW.MEASURES(), kterou můžeme používat také v objektech modelu a můžeme ji tak použít například pro dokumentaci měřítek v počítané tabulce.
DAX dotaz:
Výsledkem výše uvedeného DAX dotazu bude tabulka se čtyřmi sloupci.
Výsledná tabulka obsahuje jeden řádek pro každé měřítko vytvořené v modelu. V prvním sloupci jsou pak názvy měřítek, dále tabulka, do které měřítko patří, datový typ měřítka a v posledním sloupci definice měřítka.
V dalším příkladu budeme pracovat s funkcí INFO.CALCDEPENDENCY(), která obsahuje informace o závislostech mezi jednotlivými objekty v modelu. Následující DAX dotaz bude vracet pouze ta měřítka, která jsou použita v jiných DAX výpočtech, ať už se jedná o počítané sloupce, počítané tabulky nebo další měřítka.
DAX dotaz:
Výsledkem je tabulka se čtyřmi sloupci.
Výsledná tabulka obsahuje měřítka a objekty, ve kterých je dané měřítko použito jako součást výpočtu.
Podobným způsobem si můžeme nechat vypsat měřítka, která naopak nejsou použita v jiných objektech modelu. Zde je nutné upozornit, že objekty modelu nelze zaměňovat s objekty reportů. Níže uvedený DAX dotaz bude vracet měřítka která nejsou použita v počítaných sloupcích, počítaných tabulkách nebo v jiných měřítcích. Tato měřítka ale mohou být použita přímo ve vizuálech nebo v jiných objektech reportů, a nelze proto říci že tato měřítka nejsou použita vůbec a mohou být odstraněna z modelu.
DAX dotaz:
Výsledek výše uvedeného DAX dotazu vypadá v použitém modelu následovně.
Další DAX dotaz pak bude vracet seznam tabulek nahraných v modelu.
DAX dotaz:
Pokud je tabulka v modelu počítaná tabulka, ve třetím sloupci výsledného DAX dotazu uvidíme definici této počítané tabulky.
Pokud bychom chtěli, v například v rámci dokumentace modelu, získat pouze informace o počítaných tabulkách, můžeme použít následující DAX dotaz.
DAX dotaz:
Výsledkem DAX dotazu je následující tabulka.
Další INFO funkce z kategorie VIEW, tedy INFO funkce, které můžeme používat také v počítaných tabulkách nebo v měřítcích a počítaných sloupcích, je funkce INFO.VIEW.RELATIONSHIPS().
DAX dotaz:
Výsledek výše uvedeného DAX dotazu vypadá v použitém modelu následovně.
Výsledná tabulka obsahuje pět řádku, jeden řádek pro každou relaci. Zajímavostí může být, že v modelu jsou ve skutečnosti pouze čtyři relace. Důvod, proč vidíme ve výsledné tabulce relací pět, je relace 1:1 mezi tabulkou 'Sales' a tabulkou 'Sales Order'.
Každá relace 1:1 je totiž DAX Enginem zpracována jako dvě relace 1:M, jedna relace v každém směru. Proto například nemůžeme mezi tabulkami ve vztahu 1:1 změnit směr filtrace z obousměrné na jednosměrnou, pokud tedy nezměníme samotnou kardinalitu relace.
Pro zjištění informací o sloupcích nahraných v modelu můžeme použít funkci INFO.VIEW.COLUMNS() například následujícím způsobem.
DAX dotaz:
Výsledkem výše uvedeného DAX dotazu je tabulka s následující strukturou.
Výsledná tabulka obsahuje jeden řádek pro každý sloupec nahraný v modelu. Zajímavostí může být sloupec typu RowNumber, který můžeme najít v každé tabulce. Jedná se o sloupec, který obsahuje jedinečný identifikátor řádků tabulky, a který si Vertipaq Engine vytvoří pro interní účely při importu dat do modelu. Tento sloupec nemůžeme používat v DAX výpočtech.
Pokud bychom chtěli, například pro účely dokumentace, vypsat pouze počítané sloupce, můžeme použít následující DAX dotaz.
DAX dotaz:
Výsledkem bude tabulka s jedním řádkem pro každý počítaný sloupec.
Ukázky DAX dotazů v tomto příspěvku zdaleka nezachycují rozsah informací, které můžeme o modelu získat prostřednictvím INFO funkcí. Tyto funkce navíc můžeme kombinovat s ostatními DAX funkcemi, díky čemuž můžeme jednoduše filtrovat nebo propojovat jednotlivé tabulky, které jsou výsledkem INFO funkcí.
Oficiální Microsoft dokumentace INFO funkcí:
https://learn.microsoft.com/cs-cz/dax/info-functions-dax
Komentáře
Okomentovat