Alıştırma - Gerçekleştirme işlevini kullanarak sorguları iyileştirme

Tamamlandı

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:

  1. Gelire göre en üst durumları almak için aşağıdaki sorguyu çalıştırın. ve USCustomerSalesdeğişkenlerine let alt sorgular USCustomers atamak için deyimini kullanın.

    Sorguyu çalıştırma

    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.

    Screenshot of the `materialize` function, showing the first block of the query.

  2. 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 kullanarak materialize 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.

    Sorguyu çalıştırma

    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:

    Screenshot of the materialize function, showing the second block of the query.

  3. 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.

    Sorguyu çalıştırma

    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:

    Screenshot of the materialize function, showing the entire query.