Gyakorlat – Lekérdezések optimalizálása a materialize függvény használatával

Befejeződött

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:

  1. 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ókhoz USCustomers és USCustomerSalesa .

    A lekérdezés futtatása

    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.

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

  2. 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ásban let 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.

    A lekérdezés futtatása

    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:

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

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

    A lekérdezés futtatása

    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:

    Screenshot of the materialize function, showing the entire query.