Použití proměnných ke zvýšení výkonu a řešení problémů

Dokončeno

Ve vzorcích DAX můžete používat proměnné, které vám pomohou psát méně složité a efektivnější výpočty. Vývojáři, kteří s Power BI Desktopem teprve začínají, proměnné příliš nepoužívají, přestože jsou efektivní a při vytváření měr byste je měli standardně používat.

Některé výrazy obsahují spoustu vnořených funkcí a opakovaně používají výrazovou logiku. Zpracování těchto výrazů trvá déle a je obtížné jim porozumět, a tedy také vyřešit jejich problémy. Pokud používáte proměnné, můžete při zpracování dotazu ušetřit čas. Tato změna je krokem správným směrem k optimalizaci výkonu sémantického modelu.

Použití proměnných v sémantickém modelu poskytuje následující výhody:

  • Vyšší výkon – proměnné mohou zvýšit efektivitu měr, protože Power BI nemusí vyhodnocovat stejný výraz několikrát. V dotazu dosáhnete stejných výsledků za přibližně polovinu původního času zpracování.

  • Lepší srozumitelnost – proměnné mají krátké popisné názvy a používají se místo nejednoznačných víceslovných výrazů. Můžete zjistit, že při používání proměnných jsou vzorce srozumitelnější.

  • Jednodušší ladění – proměnné můžete použít k ladění vzorců a testování výrazů, což oceníte při řešení problémů.

  • Menší složitost – proměnné nevyžadují použití funkcí EARLIER nebo EARLIEST jazyka DAX, které jsou obtížné na pochopení. Tyto funkce byly vyžadovány před zavedením proměnných a psaly se v komplexních výrazech, které představily nové kontexty filtru. Teď, když místo těchto funkcí můžete použít proměnné, můžete psát méně složitých vzorců.

Použití proměnných ke zvýšení výkonu

Abychom ilustrovali, jak můžete pomocí proměnné vytvořit efektivnější míru, zobrazuje následující tabulka definici míry dvěma různými způsoby. Všimněte si, že ve vzorci se opakuje výraz, který počítá „stejné období loňského roku“, ale dvěma různými způsoby: v prvním případě se používá normální výpočetní metoda DAX a ve druhém se ve výpočtu používají proměnné.

Ve druhém řádku tabulky je zobrazena vylepšená definice míry. Tato definice používá klíčové slovo VAR k zavedení proměnné s názvem SalesPriorYear a používá výraz pro přiřazení výsledku „stejného období loňského roku“ k této nové proměnné. Potom ve výrazu DIVIDE použije proměnnou dvakrát.

Bez proměnné

Sales YoY Growth =
DIVIDE (
    ( [Sales] - CALCULATE ( [Sales], PARALLELPERIOD ( 'Date'[Date], -12, MONTH ) ) ),
    CALCULATE ( [Sales], PARALLELPERIOD ( 'Date'[Date], -12, MONTH ) )
)

S proměnnou

Sales YoY Growth =
VAR SalesPriorYear =
    CALCULATE ( [Sales], PARALLELPERIOD ( 'Date'[Date], -12, MONTH ) )
VAR SalesVariance =
    DIVIDE ( ( [Sales] - SalesPriorYear ), SalesPriorYear )
RETURN
    SalesVariance

V první definici míry v této tabulce je vzorec neefektivní, protože Power BI musí stejný výraz vyhodnocovat dvakrát. Druhá definice je efektivnější, protože vzhledem k proměnné potřebuje Power BI vyhodnotit výraz PARALLELPERIOD jenom jednou.

Pokud má váš sémantický model více dotazů s více mírami, může použití proměnných zkrátit celkovou dobu zpracování dotazů na polovinu a zlepšit celkový výkon sémantického modelu. Toto řešení je navíc jednoduché; představte si úspory s rostoucí složitostí vzorců, například když pracujete s procenty a průběžnými součty.

Použití proměnných ke zlepšení srozumitelnosti

Kromě zvýšení výkonu si můžete všimnout, že používání proměnných zlepšuje srozumitelnost kódu.

Při používání proměnných se osvědčuje používat popisné názvy. V předchozím příkladu má proměnná název SalesPriorYear (Prodej v loňském roce), ze kterého je zřejmé, co tato proměnná počítá. Uvažujte, jak by to vypadalo při použití proměnné s názvem X, temp nebo proměnná1; účel proměnné by nebyl vůbec zřejmý.

Používání jasných, stručných a výstižných názvů vám pomůže porozumět tomu, co se snažíte vypočítat, a značně usnadní jiným vývojářům údržbu vaší sestavy v budoucnosti.

Použití proměnných k řešení problémů ve více krocích

Proměnné vám mohou pomoci při ladění vzorce a zjištění příčiny problému. Proměnné usnadňují řešení problémů s výpočty DAX tím, že se jednotlivé proměnné vyhodnocují samostatně a opakovaně se volají za výrazem RETURN.

V následujícím příkladu testujete výraz, který je přiřazený k proměnné. Abyste mohli ladit, dočasně přepište výraz RETURN tak, aby se zapisoval do proměnné. Definice míry vrátí pouze proměnnou SalesPriorYear , protože to je to, co následuje po výrazu RETURN.

Sales YoY Growth % =
VAR SalesPriorYear =  CALCULATE([Sales], PARALLELPERIOD('Date'[Date], -12, MONTH))
VAR SalesPriorYear% = DIVIDE(([Sales] - SalesPriorYear), SalesPriorYear)  
RETURN  SalesPriorYear%

Výraz RETURN zobrazí pouze hodnotu SalesPriorYear%. Tato technika vám umožňuje vrátit tento výraz zpět, jakmile dokončíte ladění. Vzhledem k menší složitosti kódu DAX zároveň zlepšuje srozumitelnost výpočtů.