A DAX optimalizálása LuckyTemplates számára a DAX Studio – Formula Engines segítségével

Amikor az adatmodellt és a DAX for LuckyTemplates-hez optimalizálja, érdemes megjegyezni, hogy a színfalak mögött két motor fut – a képletmotor és a tárolómotor .

Ez a két motor együtt dolgozik, hogy visszaadja a szükséges eredményeket a felhasználónak. Az eredményeket táblázat vagy skálaérték formájában adják meg.

Tartalomjegyzék

A Formula Motor szerepe

Ebben a cikkben a formulamotorra fogunk összpontosítani.

A képletmotor a legfelső szintű motor, amely a lekérdezés teljes architektúráját kezeli.

Bármit is csinál egy lekérdezés végrehajtása közben, vagy miközben egy számított oszlopot vagy egy számított táblázatot hoz létre, a képletmotor beindul.

A képletmotor nemcsak a DAX-ban, hanem az MDX-ben is megérti a kapott lekérdezéseket. Például az Excel használatakor pivot-modelleket hoz létre pivot-táblázatok alapján, és a kimutatástáblázatok valójában MDX nyelvet használnak.

Itt lép be a képletmotor. Mivel a DAX-ot és az MDX-et is megérti, használhat egy másik LuckyTemplates modellt is. Az ebből az adatmodellből küldött lekérdezések DAX-ot, míg a pivot-modellből érkező lekérdezések MDX-et fognak használni.

Hogyan működik a Formula Engine

Az MDX-forrásból vagy a DAX-forrásból származó lekérdezések megértése csak egy tényező a képletmotor teljesítményében. Más lépéseken is keresztülmegy, amelyek segítenek a lekérdezéseken.

Először is létre kell hoznia egy lekérdezési tervet, amelyet a tárolómotor megért . Az alacsonyabb szintű motorként a tárolómotor valójában nem tudja, hogy az Excelben lévő pivot tábla vagy a LuckyTemplates vizualizációja végrehajtotta-e a lekérdezést.

Lekérdezési terv létrehozásakor a képletmotor először egy logikai lekérdezési tervet készít, majd egy fizikai lekérdezési tervet. A logikai és a fizikai lekérdezési tervnek is hasonlítania kell egymásra.

A fizikai lekérdezési terv teljesítése után a felhasználó vagy az ügyféleszköz megkapja az eredménykészletet. Innentől kezdve az ügyféleszköz határozza meg, hogyan fogja használni az eredményeket vagy az adatkészletet, hogy megjelenítse a végeredményt a felhasználó számára.

A Formula motor fő korlátai

A képletmotor óriási szerepet játszik, amikor a DAX-ot LuckyTemplateshez optimalizálja a DAX Studio használatával. Ez azonban bizonyos korlátozásokkal is jár.

Először is, a formulamotor mindig egyetlen magot használ a teljes működés kezelésére, függetlenül attól, hogy hány CPU mag áll rendelkezésre a rendszerben .

Amikor megnyitom a Feladatkezelőt, látni fogja, hogy a CPU-m hat maggal rendelkezik.

A DAX optimalizálása LuckyTemplates számára a DAX Studio – Formula Engines segítségével

Ennek ellenére a formulamotor továbbra is kiválaszt egyet a hat mag közül, amellyel dolgozni, míg a tárolómotort hagyja a többi használatára.

Másodszor, a képletmotornak nincs közvetlen hozzáférése az adatbázishoz . E korlátozás miatt az adatokat vagy a belső memóriában kell tárolnia, vagy tárolhatja az adatbázisban, és létrehozhat egy DirectQuery-t az adatbázison keresztül.

A tárolómotorra is támaszkodik, hogy az adatokat adatgyorsítótár formájában kapja meg. A képletmotor ezután iterál az adatgyorsítótáron, és folytatja, mielőtt eredményeket tudna nyújtani a végfelhasználónak.

Hogyan segít a Formula Engine optimalizálni a DAX-ot LuckyTemplates számára?

Néha, amikor megpróbálja optimalizálni az adatmodellt vagy a DAX-ot LuckyTemplateshez, észreveszi, hogy a tárolómotor lelassul, miközben lekérdezéseket hajt végre. Ebben az esetben használhatja a képletmotort a teljes számítás elvégzéséhez a folyamat optimalizálása érdekében.

Vegye figyelembe, hogy ha a képletmotor végül a teljes táblát önmagában építi fel, a folyamat során létrehozott eredményhalmaz nem kerül felhasználásra a következő lekérdezésekben, amelyeket az ügyféleszköz generál, ha azok hasonlóak a korábban végrehajtott lekérdezésekhez . De abban az esetben, ha a tárolómotor biztosítja az adatgyorsítótárat, akkor az adott adatgyorsítótár a memóriában tartható, így optimalizálni tudja az ügyféleszköztől érkező kéréseket.

Hogyan fog ez működni?

Tegyük fel, hogy írunk egy lekérdezést, amelyet teljes egészében a tárolómotor hajt végre, de néhány szempontot a képletmotornak kell kiszámítania. Ebben az esetben a tárolómotor visszaküld egy adatgyorsítótárat a képletmotornak, és ez az adatgyorsítótár (ha egyszerű) a memóriában tárolható.

Most, ha néhány másodperccel később érkezik egy hasonló lekérdezés, ahelyett, hogy a teljes adatmodellt még egyszer átvizsgálná, a képletmotor vagy a tárolómotor az adott adatgyorsítótárat használja, így csökkenthető a lekérdezési idő és a felhasználói élmény. javított.

A Formula motor terhelésének csökkentése

A formulamotor ismét megérti a DAX és MDX kódokat.

Tehát ha használod,és egyéb feladatok, a formula motor ismeri a DAX nyelven belül használt összes függvényt, és képes lesz mindezt önállóan megoldani. Ez azonban hatással lehet a lekérdezés teljesítményére, különösen mivel a képletmotor mindent egyetlen mag használatával próbál meg végrehajtani.

Éppen ezért ügyelnünk kell a formulamotor terhelésének csökkentésére és a tárolómotor terhelésének növelésére is.

Jó példa arra, hogy a képletmotoron belüli számítások mennyire eltérnek a tárolómotortól, a CROSSJOIN használata.

A CROSSJOIN használatakor csak korlátozott mennyiségű adat halad át a tárolómotoron. Ami a számítás többi részét illeti, mindezt a képletmotor hajtja végre. Összehasonlításképpen, a SUMMARIZE használata azt jelenti, hogy a teljes lekérdezést végrehajtják a tárolómotoron belül.

Természetesen ez attól is függ, hogy az SUMMARIZE-t hogyan használják.

Ha a SUMMARIZE-t használjuk a legbelső funkcióként, akkor az mindenképpen lenyomódik a tárolómotorra. Bizonyos esetekben azonban az SUMMARIZE egy másik kóddal együtt használatos, amely a képletmotor működését igényli. Ebben az esetben a képletmotor közbelép és elvégzi a munkát.

Annak ismerete, hogy hol halad a terhelés, segíthet optimalizálni a lekérdezés teljesítményét, különösen akkor, ha szem előtt tartja az Ön rendelkezésére álló motorok kapacitását és korlátait.

Eszközök, amelyek segíthetnek optimalizálni a DAX-ot LuckyTemplates számára

A DAX optimalizálása könnyebb lesz, ha maximalizálja az ezt lehetővé tevő eszközöket. A DAX Studio az egyik ilyen eszköz.

Vegyük a korábbi példát, ahol a képletmotor átveszi a számítás befejezésének teljes terhét az ÖSSZEFOGLALÁS függvény használatakor. A DAX Studio segíthet a kód átírásában oly módon, hogy az SUMMARIZE-t a tárolómotorba tolja, felszabadítva a formulamotor terhelését. Ez potenciálisan javítja az adatmodell és a lekérdezések teljesítményét.

Természetesen ennek zökkenőmentesen kell működnie egyszerű lekérdezések esetén. Vannak bonyolultabb forgatókönyvek is.

Például létrehozhat olyan összetett modelleket, amelyek két tárolómotort használnak magán az adatmodellben. Az egyik a Vertipaq, a másik pedig a DirectQuery számára. Ebben az esetben az adatbázist úgy kell optimalizálni, hogy a generált lekérdezések az adott relációs adatmodellhez épüljenek fel.

Tegyük fel, hogy a dátummodellben két tábla van – a Termékek tábla és az Értékesítés tábla. A Termékek tábla a Vertipaq tárolóban található, míg az Értékesítési tábla, mivel egy nagyobb tábla, közvetlenül az adatbázison belül van tárolva egy DirectQuery kapcsolaton keresztül.

Tételezzük fel azt is, hogy a mátrixba húzza a Márka oszlopot, valamint a DirectQuery kapcsolaton belüli értékesítési táblából származó Teljes értékesítés mértékét.

Ebben az esetben a képletmotornak kell végrehajtania a műveletet a két motor között.

Először is lekéri a Termékkulcs és Márka oszlopokat a Termékek táblázatból. Ezután lekéri a Nettó ár, Mennyiség és Termékkulcs oszlopokat az Értékesítési táblázatból. Miután mind a Vertipaq, mind a DirectQuery adatgyorsítótárával rendelkezik, a képletmotornak fel kell vennie az adatgyorsítótárat, és meg kell próbálnia csatlakozni hozzájuk, hogy az eredményeket a végfelhasználónak lássa.




Következtetés

A formula motor valóban óriási szerepet játszik, amikor a DAX-szal dolgozik. Mindazonáltal kritikus fontosságú annak megértése, hogyan működik, mielőtt belevágna. A képletmotor és a tárolómotor zökkenőmentes együttműködésének elsajátítása kulcsfontosságú, különösen akkor, ha azt szeretné, hogy DAX-lekérdezései jobban teljesítsenek.

Az elemzési szolgáltatások architektúrájának legfelső szintű motorjaként a képletmotornak sok műveletet kell végrehajtania. De miután megértette a tárolómotor csínját-bínját is, kitalálhatja, hogy melyik műveletet helyezze be a tárolómotorba, és melyiket hagyja a képletmotoron belül.

Egy külön oktatóanyagban mélyebbre ásunk a tárolómotorral.

Minden jót,


Dátumtáblázat létrehozása a LuckyTemplates alkalmazásban

Dátumtáblázat létrehozása a LuckyTemplates alkalmazásban

Tudja meg, miért fontos egy dedikált dátumtáblázat a LuckyTemplatesben, és ismerje meg ennek leggyorsabb és leghatékonyabb módját.

LuckyTemplates mobil jelentéskészítési tippek és technikák

LuckyTemplates mobil jelentéskészítési tippek és technikák

Ez a rövid oktatóanyag kiemeli a LuckyTemplates mobil jelentési funkcióját. Megmutatom, hogyan készíthet hatékony jelentéseket mobileszközökön.

Professzionális szolgáltatáselemzési jelentések LuckyTemplatesben

Professzionális szolgáltatáselemzési jelentések LuckyTemplatesben

Ebben a LuckyTemplates bemutatóban olyan jelentéseket tekintünk át, amelyek professzionális szolgáltatáselemzést mutatnak be egy olyan cégtől, amely több szerződéssel és ügyfél-elkötelezettséggel rendelkezik.

Microsoft Power Platform frissítések | Microsoft Ignite 2021

Microsoft Power Platform frissítések | Microsoft Ignite 2021

Tekintse át a Power Apps és a Power Automate legfontosabb frissítéseit, valamint azok előnyeit és következményeit a Microsoft Power Platform számára.

Gyakori SQL-függvények: Áttekintés

Gyakori SQL-függvények: Áttekintés

Fedezzen fel néhány gyakori SQL-függvényt, amelyeket használhatunk, például a karakterláncot, a dátumot és néhány speciális függvényt az adatok feldolgozásához vagy manipulálásához.

LuckyTemplates sablonok létrehozása: útmutató és tippek

LuckyTemplates sablonok létrehozása: útmutató és tippek

Ebből az oktatóanyagból megtudhatja, hogyan hozhatja létre a tökéletes LuckyTemplates sablont, amely az Ön igényeinek és preferenciáinak megfelelően van konfigurálva.

Mezőparaméterek és kis többszörösek a LuckyTemplatesben

Mezőparaméterek és kis többszörösek a LuckyTemplatesben

Ebben a blogban bemutatjuk, hogyan lehet a mezőparamétereket kis többszörösekkel rétegezni, hogy hihetetlenül hasznos betekintést és látványelemeket hozzon létre.

LuckyTemplates rangsor és egyéni csoportosítás

LuckyTemplates rangsor és egyéni csoportosítás

Ebből a blogból megtudhatja, hogyan használhatja a LuckyTemplates rangsorolási és egyéni csoportosítási funkcióit a mintaadatok szegmentálására és kritériumok szerinti rangsorolására.

A LuckyTemplatesben csak egy meghatározott dátumig összesített összeg látható

A LuckyTemplatesben csak egy meghatározott dátumig összesített összeg látható

Ebben az oktatóanyagban egy konkrét technikát fogok bemutatni, hogyan jelenítheti meg a kumulatív összeget csak egy adott dátumig a LuckyTemplates vizualizációjában.

Bullet Charts: speciális egyéni látványelemek a LuckyTemplates számára

Bullet Charts: speciális egyéni látványelemek a LuckyTemplates számára

Ismerje meg, hogyan hozhat létre és testreszabhat Bullet diagramokat a LuckyTemplates alkalmazásban, amelyeket főként a teljesítmény mérésére használnak a célhoz vagy az előző évekhez képest.