V Power BI nebo PowerPivot můžeme pomocí DAX vytvářet dva typy nových hodnot. Jsou to calculated measures (metriky) a columns (Sloupce). Rozdíl mezi measure a column a jeho pochopení je dalším významným krokem k porozumnění jazyka DAX.
Přidání nové metriky nebo sloupce provádíme nad tabulkou v Power BI tak, že klikneme pravým tlačítkem nad libovolný sloupec. Následně vybereme buď New measure nebo New column (viz. obrázek).
Column – přídáním nového sloupce do kterého následně napíšeme vzorec DAX dojde k tomu, že vzorec je zpracováván na úrovni tabulky řádek po řádku a na úrovni reportu dochází k sečtení všech hodnot sloupce. Vytvořený sloupec pak uvidíme přímo v tabulce.
Measure – U metriky je efekt jiný. Nevidíme je u tabulky jako nový sloupec, ale jako pole v nabídce pod tabulkou. V reportu se metrika počítá až na úrovni reportu v kontextu, ve kterém ho zobrazujeme.
Measure vs column s ukázkou reportu
Názorná ukázka snad pomůže pochopit rozdíl. V rámci ukázky budeme pracovat s těmito tabulkami:
- Tržby (FactInternetSales)
- Teritoria (DimSalesTerritory), ve kterých se prodává – geografické informace o tržbách, tzn. kde která tržba byla realizována
- Kalendář (DimDate), který obsahuje datumy a pomocné informace jako měsíc, rok, atd.
Krok 1) Do tabulky s tržbami, která obsahuje jednotkové ceny výrobků, náklady na výrobu a prodané množství nejprve doplním nový sloupec s celkovými tržbami = cena * množství
Krok 2) Vyrobíme si jednoduchou power bi vizualizaci, kde si budu zobrazovat průběžný výsledek. Zobrazíme si tržby po teritoriích.
Krok 3) Teď ilustrujme rozdíl mezi measures a columns. Nejprve přidejme nový sloupec přes DAX vzorec (viz obrázek níže), který bude ukazovat poměr jednotkových nákladů a jednotkové ceny = UnitCosts/UnitPrice a zobrazme si výsledek v reportu.
Výsledek je nesmysl (viz obrázek) – došlo k tomu, že se sečetly procentuální podíly přes všechny řádky.
Krok 4) Aby report fungoval správně, tak musíme založit nikoliv nový sloupec, ale DAX metriku. Metrika se počítá až na úrovni reportu. Vzorec pro metriku bude podobný s tím rozdílem, že použijeme agregační funkci. Poměr nákladů a ceny = SUM(UnitCosts)/SUM(UnitPrice). Výsledek je přesně jak potřebujeme.
Doufám, že byl rozdíl mezi measure a column při založení nových hodnot dostatečně vysvětlen a na závěr dávám power bi dashboard.