Övning – Kombinera tabellresultat med hjälp av union-operatorn

Slutförd

I den här övningen använder du operatorn union för att kombinera försäljningsfakta som samlats in från olika länder/regioner.

Använda operatorn union

Säljteamet ber dig att skapa en enda tabell som kombinerar 10 godtyckliga försäljningsresultat från vart och ett av följande länder/regioner: Australien, Storbritannien och USA.

Använd -instruktionen let för att skapa tre tabelluttryck, var och en med 10 poster från ett visst land/en viss region, i tabellen SalesFact , för att representera försäljningsdata från tre länder/regioner. Du kan se dem som tre separata tabeller.

När du undersöker dessa tabeller kan du se att de har samma kolumner. Den enda skillnaden är data i RegionCountryName kolumnen. Använd operatorn union för att kombinera tabellerna för försäljningsfakta för Storbritannien och USA med tabellen försäljningsfakta för Australien.

  1. Kör följande fråga.

    Kör frågan

    let AustraliaSales = SalesFact // Sales facts from Australia
        | lookup Customers on CustomerKey
        | where RegionCountryName == 'Australia'
        | take 10;
    let UnitedKingdomSales = SalesFact // Sales facts from United Kingdom
        | lookup Customers on CustomerKey
        | where RegionCountryName == 'United Kingdom'
        | take 10;
    let UnitedStatesSales = SalesFact // Sales facts from United States
        | lookup Customers on CustomerKey
        | where RegionCountryName == 'United States'
        | take 10;
    AustraliaSales
    | union UnitedKingdomSales, UnitedStatesSales
    

    Dina resultat bör se ut så här i följande bild:

    Screenshot of the union operator with tables that have the same columns, query, and results.

  2. Observera att du får alla rader från de tre tabellerna. Prova att ändra frågan för att lägga till simulerade data för Frankrike och kombinera den med data från de andra länderna/regionerna.

I följande avsnitt använder du -instruktionen let för att skapa ad hoc-tabeller som simulerar data, med de kolumner som krävs för scenarierna.

Använda operatorn union med tabeller som har olika kolumner

Nästa månad ber säljteamet dig att skapa försäljningsdata från de tre länderna/regionerna. När du undersöker tabellerna den här gången ser du att de har olika kolumner. Det fina med operatorn union är att den kombinerar tabeller även om de har olika kolumner. För den här frågan använder du den alternativa syntaxen för operatorn union , som inte kräver piped-indata.

  1. Kör följande fråga.

    Kör frågan

    let AustraliaSales = SalesFact
        | lookup Customers on CustomerKey
        | where RegionCountryName == 'Australia'
        | take 10
        | project SalesAmount, TotalCost, DateKey, RegionCountryName, CityName;
    let UnitedKingdomSales = SalesFact
        | lookup Customers on CustomerKey
        | where RegionCountryName == 'United Kingdom'
        | take 10
        | project SalesAmount, TotalCost, DateKey, RegionCountryName, Occupation;
    let UnitedStatesSales = SalesFact
        | lookup Customers on CustomerKey
        | where RegionCountryName == 'United States'
        | take 10
        | project SalesAmount, TotalCost, DateKey, RegionCountryName, StateProvinceName;
    union AustraliaSales, UnitedKingdomSales, UnitedStatesSales
    

    Dina resultat bör se ut så här i följande bild:

    Screenshot of the union operator, with tables that have different columns, query, and results.

  2. Observera att du får alla rader från de tre tabellerna och alla kolumner som förekommer i någon av tabellerna. Celler som inte definieras av en indatarad är inställda på null. Prova att ändra frågan för att lägga till fler kolumner och se hur deras värden fylls i i resultatet.

Använd operatorn union med tabeller som har olika kolumner och returnera endast de kolumner som förekommer i alla tabeller

Följande månad ber säljteamet dig återigen att skapa försäljningsdata från de tre länderna/regionerna, men den här gången vill de bara ha de kolumner som är gemensamma för alla tre tabellerna. Tidigare såg du att operatorn union returnerar alla kolumner som förekommer i någon av tabellerna. Det här beteendet är standardinställningen för operatorn union , som kallas för en yttre union, även om det är bästa praxis att alltid uttryckligen ange den fackliga typen för tydlighetens skull.

Om du bara vill returnera de kolumner som förekommer i alla tabeller använder du en inre union på samma simulerade data genom att kind=inner ange argumentet:

  1. Kör följande fråga.

    Kör frågan

    let AustraliaSales = SalesFact
        | lookup Customers on CustomerKey
        | where RegionCountryName == 'Australia'
        | take 10
        | project SalesAmount, TotalCost, DateKey, RegionCountryName, CityName;
    let UnitedKingdomSales = SalesFact
        | lookup Customers on CustomerKey
        | where RegionCountryName == 'United Kingdom'
        | take 10
        | project SalesAmount, TotalCost, DateKey, RegionCountryName, Occupation;
    let UnitedStatesSales = SalesFact
        | lookup Customers on CustomerKey
        | where RegionCountryName == 'United States'
        | take 10
        | project SalesAmount, TotalCost, DateKey, RegionCountryName, StateProvinceName;
    union kind=inner AustraliaSales, UnitedKingdomSales, UnitedStatesSales
    

    Dina resultat bör se ut så här i följande bild:

    Screenshot of the union operator, returning common columns from tables that have different columns, query, and results.

    Observera att du får alla rader från de tre tabellerna och endast de kolumner som förekommer i alla tabeller.

  2. Prova nu att ändra frågan för att lägga till vanligare kolumner genom att utöka varje tabell med en kolumn med samma namn. Se sedan hur deras värden fylls i i resultatet.