Gyakorlat – Táblaeredmények egyesítése az illesztés operátorral

Befejeződött

Ebben a gyakorlatban megtudhatja, hogyan használhatja az operátort join . Ne feledje, hogy az join operátor két tábla sorait egyesíti az egyes táblák megadott oszlopainak megfelelő értékekkel.

Használjuk az operátor eredményeit az join értékesítéssel kapcsolatos kérdések megválaszolásához.

join Az operátor használata

Kiskereskedelmi vállalati forgatókönyvünkben a csapata arra kéri, hogy sorolja fel a három országot/régiót, amelyek a legtöbb értékesítéssel rendelkeznek.

A SalesFact tábla vizsgálatának megkezdésekor láthatja, hogy a szükséges adatok elérhetők a SalesAmount oszlopban, de a tábla nem tartalmaz ország-/régióadatokat. A többi táblát megvizsgálva láthatja, hogy az ország/régió adatai elérhetők a Vevők tábla RegionCountryName oszlopában. Azt is láthatja, hogy mindkét tábla Rendelkezik CustomerKey oszloppal.

Mivel az adatok két táblára oszlanak, az ügyféladatokra és az értékesítési adatokra is szüksége lesz egy lekérdezés írásához, amely a kért adatokat tartalmazza. A lekérdezés írásához az join operátort és a CustomerKey oszlopot kell használnia a két tábla sorainak egyeztetéséhez.

Most már készen áll a lekérdezés megírására. Használjon belsőt join mindkét tábla összes egyező sorának lekéréséhez. A legjobb teljesítmény érdekében használja az ügyfelek dimenziótáblát bal oldali táblaként, az értékesítési ténytáblát pedig a jobb oldali táblaként.

Az alábbi eljárás során szakaszokban hozza létre a lekérdezést, hogy jobban megértse az operátor használatának join eredményét.

  1. A következő lekérdezés futtatásával lekérhet 10 egyező tetszőleges sort a Vevők táblából és a SalesFact táblából.

    A lekérdezés futtatása

    Customers
    | join kind=inner SalesFact on CustomerKey
    | take 10
    

    Tekintse meg az eredményként kapott listát. Figyelje meg, hogy a tábla a Vevők táblából származó oszlopokat, majd a SalesFact tábla oszlopait tartalmazza.

  2. Futtassa az alábbi lekérdezést az összekapcsolt táblák összegzéséhez a legtöbb értékesítéssel rendelkező három ország/régió lekéréséhez.

    A lekérdezés futtatása

    Customers
    | join kind=inner SalesFact on CustomerKey
    | summarize TotalAmount = round(sum(SalesAmount)) by RegionCountryName
    | top 3 by TotalAmount
    

    Az eredményeknek a következő képen láthatóhoz hasonlóan kell kinéznie:

    Screenshot of the join operator query, showing the top three countries/regions by sales.

  3. Tekintse meg az eredményként kapott listát. Módosítsa a lekérdezést úgy, hogy az ezen országok/régiók megfelelő teljes költségét és nyereségét is megjelenítse.

A csapat ezután arra kéri, hogy havonta azonosítsa azokat az országokat/régiókat, amelyek a legalacsonyabb bevételt könyvelték el az elmúlt évben. Az adatok lekéréséhez hasonló lekérdezést kell használnia. Ezúttal azonban a függvény használatával megkönnyíti a startofmonth() hónapok szerinti csoportosítást. Az aggregációs függvény használatával is arg_min() megkeresheti azokat az országokat/régiókat, ahol a legalacsonyabb a bevétel minden hónapban.

  1. Futtassa az alábbi lekérdezést.

    A lekérdezés futtatása

    Customers
    | join kind=inner SalesFact on CustomerKey
    | summarize TotalAmount = round(sum(SalesAmount))
        by Month = startofmonth(DateKey), RegionCountryName
    | summarize arg_min(TotalAmount, RegionCountryName) by Month
    | top 12 by Month desc
    

    Az eredményeknek a következő képen láthatóhoz hasonlóan kell kinéznie:

    Screenshot of the join operator query, showing the countries/regions with the lowest revenues.

  2. Nézze meg az egyes sorokat. Figyelje meg, hogy az első oszlop az elmúlt év hónapjait jeleníti meg csökkenő sorrendben, majd azokat az oszlopokat, amelyek az adott hónap legalacsonyabb értékesítési számával rendelkező ország/régió teljes értékesítését mutatják.

A rightouter join típus használata

Az értékesítési csapat termékkategória szerint szeretné tudni a teljes értékesítést. Amikor elkezdi áttekinteni a rendelkezésre álló adatokat, rájön, hogy szüksége van a Termékek táblára a termékkategóriák listájának és a SalesFact táblának az értékesítési adatok lekéréséhez. Azt is észreveheti, hogy meg szeretné számolni az egyes kategóriák értékesítéseit, és listázni az összes termékkategóriát.

A kérés elemzése után úgy dönt, hogy a rightoutertjoin használja, mivel a jobb oldali táblából származó összes értékesítési rekordot visszaadja, és a bal oldali tábla egyező adattermékkategóriájával bővül. A lekérdezést a Termékek tábla bal oldali dimenziótáblájaként, a SalesFact tények táblából származó adatokkal való egyeztetésével és az eredmény termékkategória szerinti csoportosításával írja meg.

  1. Futtassa az alábbi lekérdezést.

    A lekérdezés futtatása

    Products
    | join kind=rightouter SalesFact on ProductKey
    | summarize TotalSales = count() by ProductCategoryName
    | order by TotalSales desc
    

    Az eredményeknek a következő képen láthatóhoz hasonlóan kell kinéznie:

    Screenshot of the join operator query, showing the total sales per product.

  2. Figyelje meg, hogy a végrehajtási idő 0,834 másodperc, bár ez az idő futásonként eltérő lehet. Ez a lekérdezés az egyik módja ennek a válasznak, és jó példa egy olyan lekérdezésre, amely nincs teljesítményre optimalizálva. Később összehasonlíthatja ezt az időt egy egyenértékű lekérdezés végrehajtási idejével az lookup operátor használatával, amely az ilyen típusú adatokhoz van optimalizálva.

A rightanti join típus használata

Hasonlóképpen, az értékesítési csapat tudni szeretné, hogy az egyes termékkategóriákban nem értékesített termékek száma hány. A rightantijoin használatával lekérheti a Termékek tábla összes olyan sorát, amely nem egyezik a SalesFacts tábla egyik sorával sem, majd az eredményeket termékkategória szerint csoportosíthatja.

  1. Futtassa az alábbi lekérdezést.

    A lekérdezés futtatása

    SalesFact
    | join kind=rightanti Products on ProductKey
    | summarize Count = count() by ProductCategoryName
    | order by Count desc
    

    Az eredményeknek a következő képen láthatóhoz hasonlóan kell kinéznie:

    Screenshot of the join operator query, showing the number of products that don't sell in each product category.

    Nézze meg az egyes sorokat. Az eredmények a termékkategóriánkénti eladatlan termékek számát mutatják. Figyelje meg, hogy a rightanti join csak azokat a termékeket választja ki, amelyek nem rendelkeznek értékesítési tényekkel, jelezve, hogy az üzemeltető által join visszaadott termékek nem voltak értékesítések.