Gyakorlat – Lekérdezések optimalizálása a materialize függvény használatával
Ebben a gyakorlatban a függvény használatával materialize
optimalizálja a lekérdezéseket.
Ne feledje, hogy a materialize
függvény gyorsítótárazza az al lekérdezések eredményeit a futtatáskor, így a lekérdezés más részei hivatkozhatnak a részleges eredményre.
Az materialize
függvény használata
Kiskereskedelmi vállalati forgatókönyvünkben az értékesítési csapat a 10 legkeresettebb ügyfelet kéri fel a bevétel alapján, és hogy százalékban mennyivel járulnak hozzá az államok értékesítéséhez.
Ennek az információnak a megadásához szakaszokra szeretné bontani a lekérdezést, hogy az egyes szakaszokban az eredmények az alábbiak szerint jelenjenek meg:
Futtassa a következő lekérdezést a legfontosabb állapotok bevétel szerinti lekéréséhez.
let
Az utasítás használatával al lekérdezéseket rendelhet a változókhozUSCustomers
ésUSCustomerSales
a .let USCustomers = Customers | where RegionCountryName == 'United States'; let USCustomerSales = SalesFact | summarize USTotalCustomerSales = sum(SalesAmount) by CustomerKey | join kind=inner USCustomers on CustomerKey; USCustomerSales | summarize USTotalStateSales = round(sum(USTotalCustomerSales)) by StateProvinceName
Tekintse meg az eredményként kapott listát. Figyelje meg, hogy a tábla a StateProvinceName és az USTotalStateSales oszlopait tartalmazza. Az eredményekben meg szeretné jeleníteni a tartomány nevét, ezért csatlakoznia kell az Ügyfelek táblához az eredményekhez.
Az alábbi lekérdezés futtatásával adja hozzá a tartományt és az állapotok legfontosabb ügyfeleinek adatait az eredményekhez. Ezeket az adatokat úgy adhatja hozzá, hogy az
USCustomerSales
al lekérdezést az előző lekérdezés eredményeihez illeszti.Most optimalizálja a lekérdezést az
materialize
USCustomerSales táblautasításbanlet
található függvény használatával. Ezzel csak egyszer futtatja a hozzárendelt al lekérdezést, és gyorsítótárazza az eredményeket.let USCustomers = Customers | where RegionCountryName == 'United States'; let USCustomerSales = materialize( SalesFact | summarize USTotalCustomerSales = sum(SalesAmount) by CustomerKey | join kind=inner USCustomers on CustomerKey); USCustomerSales | summarize USTotalStateSales = round(sum(USTotalCustomerSales)) by StateProvinceName | lookup ( USCustomerSales | summarize arg_max(USTotalCustomerSales, *) by StateProvinceName ) on StateProvinceName | top 10 by USTotalStateSales
Az eredményeknek a következő képen láthatóhoz hasonlóan kell kinéznie:
Futtassa a következő lekérdezést a jelentés oszlopainak kimenetéhez, és százalékos arányban számítsa ki a legfontosabb ügyfelek hozzájárulását az állapotuk értékesítéséhez.
let Pcent = (portion: real, total: real) { round(100 * portion / total, 2) }; let USCustomers = Customers | where RegionCountryName == 'United States'; let USCustomerSales = materialize( SalesFact | summarize USTotalCustomerSales = sum(SalesAmount) by CustomerKey | join kind=inner USCustomers on CustomerKey); USCustomerSales | summarize USTotalStateSales = round(sum(USTotalCustomerSales)) by StateProvinceName | lookup ( USCustomerSales | summarize arg_max(USTotalCustomerSales, *) by StateProvinceName ) on StateProvinceName | top 10 by USTotalStateSales | project StateProvinceName, StateSales = USTotalStateSales, TopCustomerFirstName = FirstName, TopCustomerLastName = LastName, TopCustomerSales = round(USTotalCustomerSales), TopCustomerPercentage = Pcent(USTotalCustomerSales, USTotalStateSales)
Az eredményeknek a következő képen láthatóhoz hasonlóan kell kinéznie: