Övning – Optimera frågor med hjälp av funktionen materialisera
I den här övningen materialize
använder du funktionen för att optimera dina frågor.
Kom ihåg att materialize
funktionen cachelagrar resultatet av en underfråga när den körs, så att andra delar av frågan kan referera till det partiella resultatet.
Använda materialize
-funktionen
I vårt detaljhandelsföretagsscenario ber säljteamet dig om de främsta kunderna i de 10 främsta delstaterna, efter intäkter och hur mycket de i procent bidrar till delstaternas försäljning.
Om du vill ange den här informationen vill du dela upp frågan i faser så att du kan se resultat i varje steg på följande sätt:
Kör följande fråga för att hämta de översta tillstånden, efter intäkter. Använd -instruktionen
let
för att tilldela underfrågor till variablernaUSCustomers
ochUSCustomerSales
.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
Ta en titt på den resulterande listan. Observera att tabellen innehåller kolumner för StateProvinceName och USTotalStateSales. Du vill visa provinsnamnet i resultatet, så du måste ansluta tabellen Kunder till resultatet.
Kör följande fråga för att lägga till provinsen och information om de främsta kunderna i delstaterna i resultatet. Du lägger till dessa data genom att koppla
USCustomerSales
underfrågan till resultatet från föregående fråga.Optimera frågan med hjälp
materialize
av funktionen i tabellsatsenlet
USCustomerSales. På så sätt körs den tilldelade underfrågan bara en gång och cachelagrar resultatet.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
Dina resultat bör se ut så här i följande bild:
Kör följande fråga för att mata ut kolumnerna för rapporten och beräkna de främsta kundernas bidrag till deras tillståndsförsäljning i procent.
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)
Dina resultat bör se ut så här i följande bild: