A teljesítmény növelése és hibaelhárítás változókkal

Befejeződött

A DAX-képletekben változókkal kevésbé összetett és hatékonyabb számításokat készíthet. A változókat nem használják eleget a Power BI Desktoppal még csak ismerkedő fejlesztők, pedig rendkívül hatékonyak, és alapértelmezésnek számítanak mértékek létrehozásakor.

Egyes kifejezésekhez számos beágyazott függvényt, valamint kifejezéslogikákat kell használni. Ezen kifejezések feldolgozása hosszabb időt vesz igénybe, nehezebben olvashatók, és így nehezebben is végezhető rajtuk hibaelhárítás. Ha változókat használ, lekérdezésfeldolgozási időt takaríthat meg. Ez a változás a szemantikai modellek teljesítményének optimalizálása felé irányuló jó irányba irányuló lépés.

A változók szemantikai modellben való használata a következő előnyökkel jár:

  • Jobb teljesítmény – A változók hatékonyabbá tehetik a mértékeket, mert így nem kell a Power BI-nak többször kiértékelnie ugyanazt a kifejezést. Ugyanazt az eredményt körülbelül feleannyi feldolgozási idő alatt elérheti egy lekérdezésben.

  • Jobb olvashatóság – A változók rövid, egyértelmű nevekkel rendelkeznek, amelyeket nem egyértelmű, többszavas kifejezések helyett használhat. Esetenként könnyebb lehet a képletek megértése, ha az változókat tartalmaz.

  • Leegyszerűsített hibakeresés – Változókkal hibakeresést végezhet a képleteken és kifejezéseket tesztelhet, ami hasznos lehet a hibaelhárítás során.

  • Alacsonyabb komplexitás – A változókhoz nincs szükség a nehezen érthető EARLIER és EARLIEST DAX-függvényekre. A változók bevezetése előtt ezek a függvények kötelezőek voltak, és összetett kifejezésekkel voltak megírva, amelyek új szűrőkontextusokat vezettek be. Most, hogy ezen függvények helyett már használhat változókat, kevesebb összetett képletet kell írnia.

Változók használata a teljesítmény javítása érdekében

A következő táblázat egy mértékdefiníció két különböző változatát mutatja be, amellyel illusztrálja, hogyan tehető hatékonyabbá egy mérték egy változóval. Látható, hogy a képlet két, egymástól eltérő módon ismétli meg a „múlt év ugyanezen időszakát” kiszámító kifejezést: az első példány a normál DAX-számítási módszert használja, a második pedig változókat használ a számításban.

A tábla második sora a továbbfejlesztett mértékdefiníciót mutatja. Ez a definíció a VAR kulcsszóval bevezet egy SalesPriorYear nevű változót, és egy kifejezéssel hozzárendeli a „múlt év ugyanezen időszakának” eredményét az új változóhoz. Ezután kétszer használja a változót a DIVIDE kifejezésben.

Változó nélkül

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

Változóval

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

A táblázatban az első mértékdefiníciónál a képlet nem hatékony, mert az szükséges hozzá, hogy a Power BI kétszer értékelje ki ugyanazt a kifejezést. A második definíció hatékonyabb, mert a változó miatt a Power BI-nak csak egyszer kell kiértékelnie a PARALLELPERIOD kifejezést.

Ha a szemantikai modell több lekérdezést is használ több mértékkel, a változók használata felére csökkentheti a teljes lekérdezésfeldolgozási időt, és javíthatja a szemantikai modell általános teljesítményét. Emellett ez a megoldás egyszerű is. A megtakarítás annál jelentősebb lesz, minél összetettebbek a képletek, például ha százalékos számításokat vagy összesítéseket végez.

Változók használata az olvashatóság javítása érdekében

A változók használata a jobb teljesítmény mellett a kód olvasását is megkönnyíti.

Változók használatakor ajánlott a változóknak beszédes nevet adni. Az előző példában a változó neve SalesPriorYear (Értékesítések az előző évben), ami világosan utal arra, hogy a változó mit fog kiszámítani. Gondoljon bele, ha ehelyett olyan változóneveket használna, mint X, temp vagy változó1 – egyáltalán nem lehetne tudni, hogy mire is való a változó.

Ha világos, tömör és leíró neveket használ, akkor sokkal jobban látható lesz, hogy mit szeretne kiszámítani, és más fejlesztők dolgát is megkönnyíti, akiknek majd később kell a jelentést karbantartaniuk.

Változók használata több lépés hibaelhárításához

A változók segítségével hibakeresést végezhet a képletekben, és azonosíthatja a problémát. Változókkal egyszerűbben lehet hibaelhárítást végezni a DAX-számításokon úgy, hogy minden változót külön-külön kiértékelünk, majd újra meghívjuk őket a RETURN kifejezést követően.

A következő példában egy változóhoz rendelt kifejezést tesztelünk. A hibakereséshez ideiglenesen átírja a RETURN kifejezést a változóba való íráshoz. A mértékdefiníció csak a SalesPriorYear változót adja vissza, mert ez jön a RETURN kifejezés után.

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

A RETURN kifejezés csak a SalesPriorYear% értéket jeleníti meg. Ez a technika lehetővé teszi, hogy a hibakeresést követően visszaállítsuk a kifejezést. Emellett a számítások értelmezését is egyszerűbbé teszi, mivel a DAX-kód is egyszerűbb lett.