Alıştırma - Gerçekleştirme işlevini kullanarak sorguları iyileştirme
Bu alıştırmada materialize
sorgularınızı iyileştirmek için işlevini kullanacaksınız.
İşlevin materialize
çalıştırıldığında bir alt sorgunun sonuçlarını önbelleğe alındığını, böylece sorgunun diğer bölümlerinin kısmi sonuca başvurabileceğini hatırlayın.
materialize
işlevini kullanma
Perakende şirketi senaryomuzda satış ekibiniz, gelire ve eyaletlerin satışlarına yüzde olarak ne kadar katkıda bulunduklarına göre ilk 10 eyaletteki en iyi müşterileri istiyor.
Bu bilgileri sağlamak için, her aşamada aşağıdaki gibi sonuçları görebilmek için sorguyu aşamalara bölmek istiyorsunuz:
Gelire göre en üst durumları almak için aşağıdaki sorguyu çalıştırın. ve
USCustomerSales
değişkenlerinelet
alt sorgularUSCustomers
atamak için deyimini kullanın.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
Sonuçta elde edilen listeye göz atın. Tabloda StateProvinceName ve USTotalStateSales sütunları olduğuna dikkat edin. Sonuçlarda bölge adını göstermek istediğiniz için Müşteriler tablosunu sonuçlara eklemeniz gerekir.
Eyaletleri ve eyaletlerdeki en iyi müşteriler hakkındaki ayrıntıları sonuçlara eklemek için aşağıdaki sorguyu çalıştırın. Bu verileri, önceki sorgudaki
USCustomerSales
sonuçlara alt sorguyu birleştirerek eklersiniz.Şimdi USCustomerSales tablo
let
deyimindeki işlevini kullanarakmaterialize
sorguyu iyileştirin. Bunu yaptığınızda, atanan alt sorgu yalnızca bir kez çalıştırılır ve sonuçlar önbelleğe alınır.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
Sonuçlarınız aşağıdaki görüntüdeki gibi görünmelidir:
Raporun sütunlarını çıkarmak ve en iyi müşterilerin eyaletlerinin satışlarına katkılarını yüzde olarak hesaplamak için aşağıdaki sorguyu çalıştırın.
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)
Sonuçlarınız aşağıdaki görüntüdeki gibi görünmelidir: