24. února 2025

Visual Calculations

 Jednou z nejzajímavějších novinek, které v poslední době přibyly do Power BI, jsou Visual Calculations. O co se jedná? Jak už název napovídá, jde o výpočty prováděné přímo na úrovni vizualizace. Některé výpočty je jednodušší vyhodnotit právě tímto způsobem, než je vytvářet jako obecná měřítka (measures).

V době psaní tohoto článku jsou Visual Calculations dostupné v režimu Preview, a je tedy nutné je nejprve povolit. To provedete v File → Options and settings → Options → Preview features → Visual Calculations a následně restartujete Power BI Desktop.

Jaké Visual Level Calculations máme k dispozici? Nejjednodušeji s nimi můžete začít kliknutím na tři tečky v rohu vizualizace – viz obrázek.

Pro demonstraci opět použiji demo databázi Adventure Works DW. Mám faktovou tabulku FactInternetSales, ve které mám měřítko [# Internet], definované jako součet sloupce SalesAmount. Kromě toho pracuji s kalendářovou tabulkou DimDate.

Například bych chtěl porovnat aktuální prodeje s předchozím obdobím.

Implementace pomocí klasického měřítka (measure) není úplně triviální a vyžaduje určité znalosti DAX. Výraz by mohl vypadat například takto:

# Vs Previous measure =
-- zjištění nejvyššího datumu v kontextu
var _md = max('DimDate'[Date])
-- zjištění předchozího datumu
var _pd = CALCULATE(max('DimDate'[Date]),DimDate[Date]<_md)
-- prodeje pro nejvyšší datum
var _mds = CALCULATE([# Internet],DimDate[Date]  = _md)
-- prodeje pro předchozí datum
var _pds = CALCULATE([# Internet],DimDate[Date]  = _pd)
-- výsledek vracím pouze pokud mám od sebe co odečítat
var _rslt = if(ISBLANK(_mds) || ISBLANK(_pds), BLANK(),_mds-_pds)
RETURN _rslt

Tento přístup vyžaduje několik kroků: nejprve zjistíme aktuální datum, pak odpovídající datum v předchozím období a nakonec vypočítáme rozdíl prodejů.

Zjednodušení pomocí Visual Calculation

Díky Visual Calculations lze stejný výpočet provést výrazně jednodušeji. Šablona Versus Previous, dostupná v Power BI, nám automaticky vygeneruje jádro výrazu:


Versus previous = [Field] - PREVIOUS([Field])

Kde Field představuje vybraný sloupec nebo measure. V našem případě to můžeme přepsat jako:

Versus previous =
if( --kontorola zda je co porovnávat
    ISBLANK([# Internet]) || ISBLANK(PREVIOUS([# Internet]))
    ,BLANK(), -- pokud ne, tak prázdná buňka
    -- jinak odečet
    [# Internet]-PREVIOUS([# Internet])
)

Tento přístup je výrazně jednodušší a přehlednější, přičemž stále poskytuje správné výsledky. Ve skutečnosti bychom si mohli vystačit i se základním výpočtem:

Versus previous = [# Internet]-PREVIOUS([# Internet])


Funkce PREVIOUS ve Visual Calculations vrací hodnotu z předchozího řádku vizualizace. To znamená, že její výsledek závisí na tom, jak jsou data ve vizualizaci seřazena. Pokud je tabulka setříděna sestupně podle data, funkce nebude vracet očekávané výsledky. Proto je důležité správně nastavit pořadí řazení.

Kdy použít Visual Calculation a kdy Measure?

Measures

  • Nejsou závislé na konkrétní vizualizaci – lze je znovu použít v různých reportech.
  • Pracují přímo s datovým modelem a umožňují komplexní výpočty.
  • Vhodné pro scénáře, kde je potřeba konzistentní výpočet v celém reportu.

Visual Calculations

  • Jsou vázané na konkrétní vizualizaci, takže jejich použití je omezenější.
  • Mají jednodušší syntaxi, což ocení zejména ti, kdo s DAXem začínají.
  • V některých případech mohou mít lepší výkon, protože pracují s agregovanými daty ve vizualizaci místo s detailními daty v datovém modelu.

Výběr mezi Measure a Visual Calculation tedy závisí na konkrétním scénáři – pokud potřebujete opakovaně použitelný výpočet, měřítko (measure) je lepší volba. Pokud ale hledáte rychlé řešení v rámci jedné vizualizace, Visual Calculation může být efektivnější.

Závěr

Visual Calculations jsou další skvělou součástí DAX arzenálu. Klasické measures stále mají své pevné místo, ale v některých situacích umožňují Visual Calculations jednodušší a efektivnější řešení s ohledem na výkon. Navíc fungují i pro Live Connection k SSAS a sémantickým modelům v Microsoft Fabric.

Živé demo Visual Calculations jsem ukazoval na své přednášce pro WUG. Záznam najdete zde:
Záznam přednášky na WUG

📅Chystám se téma podrobněji rozebrat na samostatné přednášce 20. 3. 2025 v rámci 9. ročníku Power BI Day. Rád vás tam uvidím i osobně!
Power BI Day 2025

📅 Pokud se chcete naučit jazyk DAX od základů až po pokročilé scénáře, včetně Visual Calculations, přijďte na můj celodenní workshop na Data Point Prague 29.–30. 5. 2025.
Data Point Prague 2025


Žádné komentáře:

Okomentovat