Funkce RELATED() vrací skalární hodnotu a je užitečná v situacích, kdy potřebujeme přistupovat z jedné tabulky k hodnotám v jiné tabulce. Funkce RELATEDTABLE() pak vrací tabulku, která může sloužit jako zdroj pro další výpočty. Funkce RELATED() a RELATEDTABLE() mohou být použity pouze mezi tabulkami, mezi kterými jsou vytvořené relace. Obě funkce mohou být použity i v rámci řetězce relací, pokud typ všech relací v řetězci odpovídá požadavkům zvolené funkce.
Příklad použití funkce RELATED
Vytvoření nového sloupce s funkcí RELATED
Příklad s použitím funkce RELATED() si můžeme vytvořit ve cvičném souboru Contoso Sales Sample for Power BI Desktop.pbix. V použitém modelu jsou mimo jiné tabulky 'Product', 'ProductSubcategory' a 'ProductCategory'. Pokud bychom chtěli mít v tabulce s produkty pro každý jeden produkt také název kategorie, do které daný produkt patří, můžeme použít funkci RELATED(), protože pro každý produkt existuje v tabulce s kategoriemi pouze jedna odpovídající kategorie.
Stačí tedy při vytváření nového počítaného sloupce v tabulce 'Product' zadat jako argument funkce RELATED() název sloupce, který obsahuje požadované hodnoty z tabulky 'ProductCategory', která je ve vztahu MANY-TO-ONE na straně ONE. Definice nového počítaného sloupce může vypadat následovně.
Počítaný sloupec:
Výsledkem je nový počítaný sloupec v tabulce 'Product'.
Použití funkce RELATED v měřítku
Funkce RELATED() může být vyvolána také v iteračních funkcích, ve kterých vzniká potřebný kontext řádku. Příkladem může být situace, kdy v tabulce 'Sales' máme množství prodaných produktů, a v tabulce 'Product' jsou jednotkové ceny produktů, které chceme použít pro výpočet sumy prodejů.
Pokud bychom chtěli pro každý řádek tabulky 'Sales' vypočítat součin prodaného množství z tabulky 'Sales' a jednotkové ceny z tabulky 'Produkt', následující postup nebude fungovat.
Požadovaný výsledek dostaneme díky funkci RELATED(), prostřednictvím které můžeme přistupovat do tabulky, jenž je ve vazbě MANY-TO-ONE na straně ONE. Funkční definice měřítka pak může vypadat následovně.
Měřítko:
Výsledné měřítko pak vrací sumu za prodané produkty v aktuálním kontextu vyhodnocení.
Funkci RELATED() můžeme použít pouze pokud je jejím výsledkem jedna skalární hodnota. Pokud by danému kontextu řádku odpovídalo v prohledávané tabulce více hodnot, můžeme použít funkci RELATEDTABLE().
Příklad použití funkce RELATEDTABLE
Pokud chceme přistupovat k tabulce, která je ve vztahu MANY-TO-ONE na straně MANY, nemůžeme již použít funkci RELATED(), protože pro každý řádek tabulky na straně ONE může existovat více záznamů v cílové tabulce na straně MANY.
Pro určité typy výpočtů ale můžeme použít funkci RELATEDTABLE(). Argumentem funkce je název tabulky. Výsledkem funkce jsou všechny řádky tabulky, které odpovídají kontextu filtru právě iterovaného řádku, ve kterém je funkce vyhodnocena.
Příkladem může být situace, kdy chceme vytvořit nový počítaný sloupec v tabulce s kategoriemi, který bude obsahovat počet produktů, které patří do každé kategorie.
Protože funkce RELATEDTABLE() vrací tabulku, následující postup není správný, protože nemůžeme vložit do jednoho řádku jinou tabulku, ale pouze skalární hodnotu.
Pokud chceme zjistit počet produktů v každé kategorii, musíme použít funkci vracející skalární hodnotu. Jednou z těchto funkcí je funkce COUNTROWS(), která spočítá počet řádku v tabulce zadané jako argument této funkce. Definice počítaného sloupce v tabulce 'ProductCategory', který bude obsahovat počet produktů z tabulky 'Product' v každé kategorii, může vypadat následovně.
Počítaný sloupec:
Výsledkem je nový počítaný sloupec v tabulce 'ProductCategory'.
Funkce RELATEDTABLE() by ve výše uvedeném příkladu mohla být nahrazena funkcí CALCULATETABLE() se stejným výsledkem, díky změně kontextu řádku na kontext filtru. Tato vlastnost je typická také pro funkci CALCULATE(). Více informací o změně kontextu řádku na kontext filtru můžete najít pod tímto odkazem. Některé praktické příklady s použitím různých DAX funkcí můžete najít na stránce Power BI - Příklady nebo na stránce DAX - příklady.
Oficiální Microsoft dokumentace funkcí RELATED a RELATEDTABLE:
https://docs.microsoft.com/cs-cz/dax/related-function-dax
https://docs.microsoft.com/cs-cz/dax/relatedtable-function-dax
Komentáře
Okomentovat