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,


Pandák cseppindex oszlopa: Példákkal magyarázva

Pandák cseppindex oszlopa: Példákkal magyarázva

Pandák cseppindex oszlopa: Példákkal magyarázva

7 módszer annak ellenőrzésére, hogy egy Python-karakterlánc tartalmaz-e részkarakterláncot

7 módszer annak ellenőrzésére, hogy egy Python-karakterlánc tartalmaz-e részkarakterláncot

7 módszer annak ellenőrzésére, hogy egy Python-karakterlánc tartalmaz-e részkarakterláncot

A Power Automate dinamikus tartalom áttekintése

A Power Automate dinamikus tartalom áttekintése

Ismerje meg, mi az a Power Automate Dynamic Content, és hogyan teszi lehetővé a felhasználók számára az előző lépésekből származó mezőhivatkozások kiválasztását vagy kifejezések írását.

Fájl helyének megváltoztatása a LuckyTemplates lekérdezési paraméterével

Fájl helyének megváltoztatása a LuckyTemplates lekérdezési paraméterével

Ebből az oktatóanyagból megtudhatja, hogyan oszthat meg egy fájlt olyan személlyel, aki nem tagja a vállalatának, a LuckyTemplates sql lekérdezési paraméterével.

Az Eltávolítás funkció használata és a megerősítő előugró ablakok beállítása

Az Eltávolítás funkció használata és a megerősítő előugró ablakok beállítása

Ismerje meg, hogyan használhatja az eltávolítási funkciót, és hogyan állíthat be megerősítő felugró ablakokat a semmiből létrehozott alkalmazásban.

A szűrőkontextus megjelenítése a LuckyTemplates DAX Studio alkalmazásban

A szűrőkontextus megjelenítése a LuckyTemplates DAX Studio alkalmazásban

Tanulja meg, hogyan jelenítheti meg egy táblázat vagy mátrix bármely cellájának szűrőkörnyezetét a LuckyTemplates DAX Studio eszköztippek segítségével.

A Power Automate folyamatok létrehozása a semmiből

A Power Automate folyamatok létrehozása a semmiből

Ismerje meg, hogyan hozhat létre Power Automate-folyamatokat a semmiből. Sablon használata helyett mi magunk hozzuk létre a kiváltó okokat és a műveleteket.

LuckyTemplates tipp: Az első N munkanap összehasonlítása

LuckyTemplates tipp: Az első N munkanap összehasonlítása

Tekintse meg Brian ezt a LuckyTemplates tippjét arról, hogyan hasonlíthatja össze dinamikusan az első N munkanapot a power query segítségével.

Power Apps modellvezérelt alkalmazások: környezetbeállítás és navigáció

Power Apps modellvezérelt alkalmazások: környezetbeállítás és navigáció

Ismerje meg a Power Apps modellvezérelt alkalmazásokat, a környezet beállítását és a hatékony navigálást.

Power Apps modellvezérelt alkalmazások: webhelytérképek és működésük

Power Apps modellvezérelt alkalmazások: webhelytérképek és működésük

Tudjon meg többet a Power Apps modellvezérelt alkalmazásokban a webhelytérképeken való munkavégzésről, és fedezze fel a különböző bonyolultságokat, és hogyan kezelheti ezeket.