Používanie premenných na vylepšenie výkonu a riešenia problémov

Dokončené

Premenné vo vzorcoch DAX môžete používať na pomoc pri zapisovaní menej zložitých a efektívnejších výpočtov. Premenné nedostatočne využívajú vývojári, ktorí začínajú v aplikácii Power BI Desktop, ale sú účinné a mali by ste ich predvolene používať pri vytváraní mierok.

Niektoré výrazy zahŕňajú použitie mnohých vnorených funkcií a opätovné používanie logiky výrazu. Spracovanie týchto výrazov trvá dlhšie a ťažko sa čítajú, a preto sa aj problémy s nimi riešia ťažšie. Ak používate premenné, môžete ušetriť čas spracovania dotazov. Táto zmena je krokom správnym smerom k optimalizácii výkonu sémantického modelu.

Používanie premenných v sémantickom modeli poskytuje nasledujúce výhody:

  • Vylepšený výkon – premenné môžu zefektívniť mierky, pretože Power BI nemusí vyhodnocovať rovnaký výraz viackrát. Rovnaké výsledky môžete dosiahnuť v dotaze približne za polovicu pôvodného času spracovania.

  • Vylepšená čitateľnosť – premenné majú krátke, popisné názvy a používajú sa namiesto nejednoznačného viacslovného výrazu. Pri používaní premenných sa vzorce môžu ľahšie čítať a chápať.

  • Zjednodušené ladenie – premenné môžete používať na ladenie vzorca a testovanie výrazov, čo môže byť užitočné pri riešení problémov.

  • Menšia zložitosť – premenné nevyžadujú použíbanie starších anajstarších funkcií DAX, ktoré sa ťažko chápu. Tieto funkcie sa požadovali pred zavedením premenných a boli napísané v zložitých výrazoch, ktoré zaviedli nové kontexty filtra. Teraz, keď môžete používať premenné namiesto týchto funkcií, môžete písať menej zložité vzorce.

Používanie premenných na vylepšenie výkonu

Na ilustráciu možností používania premennej na zefektívnenie mierky nasledujúca tabuľka zobrazuje definíciu mierky dvomi rôznymi spôsobmi. Všimnite si, že vo vzorci sa opakuje výraz, ktorý vypočíta „rovnaké obdobie minulého roka“, ale dvomi rôznymi spôsobmi: prvá inštancia používa normálnu metódu výpočtu DAX a druhá používa premenné vo výpočte.

Druhý riadok tabuľky zobrazuje vylepšenú definíciu mierky. Táto definícia používa kľúčové slovo VAR na zavedenie premennej s názvom SalesPriorYear a používa výraz na priradenie výsledku „rovnaké obdobie minulého roka“ tejto novej premennej. Potom použije premennú dvakrát vo výraze DIVIDE.

Bez premennej

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

S premennou

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

V prvej definícii mierky v tabuľke je vzorec neefektívny, pretože vyžaduje, aby služba Power BI vyhodnotila rovnaký výraz dvakrát. Druhá definícia je efektívnejšia, pretože vďaka premennej potrebuje služba Power BI výraz PARALLELPERIOD vyhodnotiť iba raz.

Ak má váš sémantický model viacero dotazov s viacerými mierkami, použitie premenných môže znížiť celkový čas spracovania dotazov na polovicu a zlepšiť celkový výkon sémantického modelu. Navyše toto riešenie je jednoduché. Predstavte si, koľko času ušetríte pri zložitejších vzorcoch, napríklad keď pracujete s percentami a priebežnými súčtami.

Používanie premenných na zlepšenie čitateľnosti

Okrem vylepšeného výkonu si môžete všimnúť, ako sa vďaka premenným zlepšuje čitateľnosť kódu.

Pri používaní premenných je najlepšie používať popisné názvy premenných. V predchádzajúcom príklade sa táto premenná nazýva SalesPriorYear (Predaj za minulý rok), ktorá jasne uvádza, čo premenná vypočítava. Predstavte si premennú s názvom X, temp alebo premenná1. Účel premennej by nebol vôbec jasný.

Vďaka jasným, výstižným a zmysluplným názvom jednoduchšie pochopíte, čo sa pokúšate vypočítať, a tiež bude oveľa jednoduchšie pre ostatných vývojárov zachovať zostavu do budúcnosti.

Používanie premenných na riešenie problémov vo viacerých krokov

Premenné môžete používať aj na ladenie vzorcov a identifikáciu problémov. Premenné pomáhajú zjednodušiť riešenie problémov s výpočtom v jazyku DAX tak, že sa jednotlivé premenné vyhodnocujú samostatne a je možné ich vyvolať po výraze RETURN.

V nasledujúcom príklade testujete výraz, ktorý je priradený k premennej. Ak chcete ladiť, dočasne prepíšete výraz RETURN tak, aby sa zapisoval do premennej. Definícia mierky vráti iba premennú SalesPriorYear , pretože tá prichádza za výrazom 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í iba hodnotu SalesPriorYear% . Táto technika vám umožňuje po dokončení ladenia vrátiť výraz. Tiež zjednodušuje pochopenie výpočtov, vďaka nižšej zložitosti kódu v jazyku DAX.