Tento příspěvek obsahuje vybrané příklady s použitím DAX funkce ADDCOLUMNS() v Power BI. Funkce ADDCOLUMNS() vrací tabulku a můžeme ji proto použít přímo v počítaných tabulkách nebo v DAX dotazech. Funkce ADDCOLUMNS() se často používá také v definici měřítka nebo počítaného sloupce, nicméně v těchto případech obvykle jako součást komplexních výrazů, protože výraz v měřítku a v počítaném sloupci musí vracet v aktuálním kontextu vždy skalární hodnotu.
K tomuto tématu je k dispozici také video:
Syntaxe funkce ADDCOLUMNS() vypadá následovně.
Syntaxe funkce ADDCOLUMNS:
Funkce ADDCOLUMNS() přidá do tabulky uvedené v prvním argumentu sloupec nebo sloupce zadané v dalších argumentech. Tabulka v prvním argumentu může být buď již existující tabulka v modelu, nebo jakýkoliv výraz nebo funkce která vrací tabulku.
Druhým argumentem funkce ADDCOLUMNS() je název nového sloupce, který se zadává v uvozovkách. Třetím argumentem je výraz, který bude vyhodnocen v kontextu řádku tabulky zadané v prvním argumentu a jehož výsledné hodnoty budou tvořit hodnoty nového sloupce. Nových sloupců můžeme pomocí funkce ADDCOLUMNS() přidat libovolné množství, vždy v páru název sloupce a výraz tvořící hodnoty sloupce.
Výsledkem funkce ADDCOLUMNS() je tabulka se všemi sloupci z tabulky zadané v prvním argumentu a navíc se sloupci vytvořenými samotnou funkcí ADDCOLUMNS() na základě zadaných argumentů.
Příklad ADDCOLUMNS
Všechny příklady v tomto příspěvku jsou vytvořeny ve cvičném Power BI souboru Adventure Works DW 2020.pbix, který je volně dostupný ke stažení na internetu. Soubor s řešením je dostupný ke stažení níže pod tímto příspěvkem. V použitém souboru je navíc měřítko [Prodeje], které má následující definici.
Měřítko:
Měřítko [Prodeje] vrací jednoduše sumu za prodané produkty v aktuálním kontextu vyhodnocení.
Funkce ADDCOLUMNS v počítané tabulce
Funkce ADDCOLUMNS() vrací tabulku a můžeme ji proto použít přímo pro definici nové počítané tabulky v Power BI. Pomocí nové počítané tabulky si tak můžeme jednoduše vysvětlit jak tato funkce funguje. Uvažujme například tabulku 'Customer', která v použitém modelu obsahuje záznamy o jednotlivých zákaznících. Tato tabulka má následující strukturu.
Tuto tabulku můžeme, stejně jako kteroukoliv jinou tabulku z použitého modelu, použít v prvním argumentu funkce ADDCOLUMNS(). Druhý argumentem funkce ADDCOLUMNS() je název nového sloupce zadaný v uvozovkách. Ve třetím argumentu pak můžeme použít jakýkoliv výraz, který bude vracet v každém řádu zadané tabulky skalární hodnotu. V definici nového sloupce se můžeme také odkazovat přímo na sloupce z tabulky v prvním argumentu. Můžeme tak například vytvořit novou počítanou tabulku na základě tabulky 'Customer', která bude navíc obsahovat nový sloupec, ve kterém spojíme jména a města zákazníků z původních sloupců do jednoho nového sloupce.Počítaná tabulka:
Výsledkem nové počítané tabulky je kopie původní tabulky 'Customer', která navíc obsahuje nový sloupec 'Zákazníci'[Zákazník a město].
Stejným způsobem můžeme k existující tabulce přidat libovolné množství sloupců. Následující výraz tak bude obsahovat dva nové sloupce přidané k původní tabulce 'Customer'.Počítaná tabulka:
Výsledkem bude nová počítaná tabulka, která bude obsahovat dva nové sloupce přidané k původní tabulce 'Customer'.
V prvním argumentu funkce ADDCOLUMNS() můžeme použít také funkce které vracejí tabulku. Příkladem může být funkce FILTER() v prvním argumentu funkce ADDCOLUMNS(), pomocí které můžeme zafiltrovat tabulku pouze na ty řádky, které odpovídají zadané podmínce.V následující definici nové počítané tabulky dojde v prvním argumentu funkce ADDCOLUMNS() nejdříve k zafiltrování tabulky 'Customer' pouze na ty řádky, které obsahují ve sloupci 'Customer'[City] hodnotu "Victoria". Následně funkce ADDCOLUMNS() použije tuto zafiltrovanou tabulku a přidá k ní nový sloupec, který bude obsahovat sumu prodejů u každého zákazníka z Kanadského města Victoria.
Počítaná tabulka:
Výsledkem je nová počítaná tabulka, která obsahuje všechny sloupce z původní tabulky a navíc nový sloupec s hodnotou prodejů u každého zákazníka. Tabulka ale obsahuje pouze ty řádky, ve kterých platí podmínka definovaná ve funkci FILTER().
Funkce ADDCOLUMNS() se často používá také v definici počítaného sloupce nebo měřítka. V těchto případech ale nemůžeme použít funkci ADDCOLUMNS() přímo, ale pouze jako součást jiných funkcí, protože výsledkem funkce ADDCOLUMNS() je tabulka, a výsledkem měřítka a počítaného sloupce musí být vždy skalární hodnota.Funkce ADDCOLUMNS v měřítku
Před uvedením příkladu použití funkce ADDCOLUMNS() v měřítku si můžeme vytvořit jednoduchý report se dvěma vizuály. Vizuál Průřez bude obsahovat roky z kalendářní tabulky. Do vizuálu Tabulka pak vložíme měsíce z kalendářní tabulky a měřítko [Prodeje].
V měřítku můžeme používat funkci ADDCOLUMNS() bez jakýchkoliv omezení. Myslet ale musíme na to, že výsledkem měřítka není tabulka, ale skalární hodnota. Funkci ADDCOLUMNS() tak budeme v měřítku používat pouze k vytvoření virtuální tabulky, která bude dále použita v jiných funkcích, pomocí kterých získáme z tabulky vytvořené funkcí ADDCOLUMNS() v aktuálním kontextu jednu hodnotu.Následující měřítko obsahuje v první proměnné s názvem ProduktyAProdeje virtuální tabulku, která bude obsahovat názvy produktů a v novém sloupci vytvořeným funkcí ADDCOLUMNS() hodnotu prodejů u každého produktu, který se prodával v daném měsíci a vybraném roce. Následně je tato virtuální tabulka, která existuje pouze v čase vyhodnocení měřítka, použita v proměnné ProdejeNejlepsiProdukt. V této proměnné je vybrána pomocí funkce MAXX() pouze jedna nejvyšší hodnota z nového sloupce [@Prodeje].
Měřítko:
Díky použití funkce MAXX() máme jistotu, že výsledkem měřítka bude vždy jedna skalární hodnota, která v kontextu jednotlivých měsíců odpovídá sumě za prodeje produktu s nejvyššími tržbami v aktuálním měsíci vybraného roku.
Všechny příklady v tomto příspěvku jsou pouze ilustrativní s cílem popsat chování a způsob použití funkce ADDCOLUMNS(). Funkce ADDCOLUMNS() je jednoduchá funkce, která má široké spektrum využití v různých typech výpočtů. Praktické příklady, některé také s použitím funkce ADDCOLUMNS(), můžete najít na stránce DAX příklady nebo na stránce Power BI.Oficiální Microsoft dokumentace funkce ADDCOLUMNS:
https://learn.microsoft.com/cs-cz/dax/addcolumns-function-dax
Komentáře
Okomentovat