Měření nebo počítané slopce
Otázku, kdy použít počítané měření a kdy počítaný sloupec, jsem obdržel již mnohokrát. Proto si pojďme na tuto otázku odpovědět. Abychom tak mohli učinit, tak musíme pochopit, co jsou tyto jednotlivé funkce zač.
Jak měření, tak sloupce se tvoří pomocí jazyka DAX „Data Analysis Expression“ a v Power BI se tvoří v Desktopové aplikaci.
Co jsou počítané sloupce?
Jak z názvu vyplývá, tak se jedná o sloupec, který je vždy součástí nějaké tabulky / dotazu. Sloupec, který se na první pohled nemusí lišit od ostatních sloupců nahraného dotazu (Query). Hodnota ve sloupci se však vypočítává pomocí výrazu. Výraz se vztahuje na řádek, občas na součet řádků, v datové sadě. Tím je myšleno, že nezapisujete žádné ID řádků, ale pouze sloupců. Výraz se automaticky použije pro každý řádek.
V každém řádku to tedy odečte hodnotu ze sloupce Kumulované výnosy od sloupce Revenue a výsledek si uloží do sebe. Jakmile se tato hodnota spočítá, tak se uloží do paměti. Přepočítávání hodnot v těchto sloupcích probíhá při aktualizaci datové sady nebo navázaného sloupce (například, kdyby se změnila hodnota ve sloupci Revenue). To, že se nám tyto sloupce ukládají do paměti znamená, že pro další aktualizaci datové sady budeme o tuto paměť potřebovat více. Velmi často jsou výpočty jednoduché a nemají příliš velký vliv na dobu aktualizace. Na druhou stranu se počítané sloupce ukládají do paměti jinak než sloupce, které přichází do datové sady z Power Query. Ukládají se jako neoptimalizované a zabírají mnohem více paměti. Při malých počtech řádků (do 10 tisíc) je to však zanedbatelné.
Shrnutí počítaných sloupců
- Sloupce ve většině případů pracují jen na úrovni řádku
- Sloupce se přepočítávají při aktualizacích
- Ukládají se do paměti
Co Je to počítané měření?
Počítané měření, nebo také míry, jsou výpočetní místa, které pracují na agregované úrovni. Primárně tedy nepracují na úrovni řádků, ale se součty, průměry, atd. za jednotlivé sloupce. Měření mají dynamický charakter, mívají na ně vliv data z jedné, ale i více tabulek. Měření nejsou předem vypočteny. Výpočet probíhá až v tu chvíli, kdy je měření zavoláno a vypočítá se a základě omezeních nastavených pomocí Filtrů a Slicerů.
Dobře… vytvořili jsme Měření. Jak zjistím, co spočítalo?
Jak jsem jim zmínil dříve, tak zatím nic nespočítalo. Skutečný výpočet proběhne až ve chvíli, kdy to vložím do nějakého visuálu v reportu. Mezi sloupci v sekci Pole má měření ikonku kalkulačky, takže ji nepřehlédnete.
Pokud ho tedy vložíte do vizuálu, dojde k výpočtu a zjistíte výsledek. Krom takto agregační funkce umí pracovat s dalšími měřeními a funkcemi mimo tabulky / dotazy. Příkladem takovéto funkce je například funkce „=NOW()“, která vrací aktuální datum. Pokud měření odkazuje na jiné měření, pak si z druhého měření přebírá pouze postup. Nedochází ke spočítání obou měření. Z toho, co jsme si řekli, tak víme, že měření vytěžují CPU, protože se musí neustále přepočítávat, ale nevytěžují paměť. Měření se přepočítává vždy pro každý vizuál zvlášť. Při každém filtrování musí dojít opět k výpočtu, a tudíž opět k vytížení CPU. Pokud tedy máme vizuál, kde je velká míra počítaných a výpočetně složitých měření, může to ztížit vykreslování vizuálu.
Shrnutí počítaných Měření
- Vypočítává se na základě filtrů
- Neukládá se
- Výpočet probíhá při každém vyvolání měření nebo filtrování
- Využívá CPU pro výpočet
Kdy tedy použít Měření a kdy sloupec?
Teď už známe obě funkce a dostáváme k otázce „Kdy kterou použít?“. Než si na tuto otázku ale můžeme odpovědět, je potřeba se zamyslet nad tím, co chceme spočítat. To nám pomůže odpovědět. Pokud chceme výpočet řádku po řádku, pak by variantou byl sloupec. Pokud chceme, aby výpočet byl primárně závislý na filtrech, pak se bavíme o měření.
Výpočet řádek po řádku
Zisk = Prodejní cena – Cena výroby (Pro všechny výskyty)
Výpočet závislý na filtrech
Tržby = Součet tržeb (Filtry nám rozhodnou, za jaké období)
Je zde lepší varianta než počítaný sloupec?
Ve většině případů v Power Query můžete udělat totožný počítaný sloupec. Jak jsme si již řekli, tak sloupce z Query přichází do Power BI datově optimalizovány a je tedy výhodnější využít jich než počítaných. Obecně by se dalo říct, že pokud by vám počítaný sloupec v Query zabral více jak tři kroky, pak se vyplatí udělat počítaný sloupec pomocí jazyka DAX. Pokud na to má DAX přímo funkci.