Esercizio - Combinare i risultati delle tabelle usando l'operatore union

Completato

In questo esercizio si usa l'operatore union per combinare i fatti di vendita raccolti da vari paesi/aree geografiche.

Usando l'operatore union.

Il team di vendita chiede di creare una singola tabella per combinare 10 risultati arbitrari delle vendite da ognuno dei paesi/aree geografiche seguenti: Australia, Regno Unito e Stati Uniti.

Usare l'istruzione let per creare tre espressioni tabulari, ognuna con 10 record di un paese/area geografica specifica, nella tabella SalesFact , per rappresentare i dati di vendita da tre paesi/aree geografiche. È possibile considerarle come tre tabelle separate.

Esaminando queste tabelle, è possibile osservare che hanno le stesse colonne. L'unica differenza è quella dei dati nella RegionCountryName colonna. Utilizzare l'operatore union per combinare le tabelle dei fatti di vendita per il Regno Unito e il Stati Uniti con la tabella dei fatti di vendita per l'Australia.

  1. Eseguire la query seguente.

    Eseguire la query

    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
    

    I risultati dovrebbero essere simili a quelli nell'immagine seguente:

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

  2. Si noti che si ottengono tutte le righe dalle tre tabelle. Provare a modificare la query per aggiungere dati simulati per la Francia e combinarli con i dati degli altri paesi/aree geografiche.

Nelle sezioni seguenti si usa l'istruzione let per creare tabelle ad hoc che simulano i dati, con le colonne necessarie per gli scenari.

Usare l'operatore union con tabelle con colonne diverse

Il mese successivo, il team di vendita chiede di nuovo di creare i dati delle vendita dei tre paesi/aree geografiche. Quando si esaminano le tabelle questa volta, si nota che hanno colonne diverse. L'aspetto interessante dell'operatore union è che combina tabelle anche se hanno colonne diverse. Per questa query si usa la sintassi alternativa per l'operatore union, che non richiede l'input inviato tramite pipe.

  1. Eseguire la query seguente.

    Eseguire la query

    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
    

    I risultati dovrebbero essere simili a quelli nell'immagine seguente:

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

  2. Si noti che si ottengono tutte le righe delle tre tabelle e tutte le colonne presenti in una qualsiasi delle tabelle. Le celle non definite da una riga di input sono impostate su Null. Provare a modificare la query per aggiungere altre colonne e vedere come i valori vengono popolati nei risultati.

Usare l'operatore union con tabelle con colonne diverse e restituire solo le colonne presenti in tutte le tabelle

Il mese seguente, il team di vendita chiede di nuovo di creare i dati delle vendite dai tre paesi/aree geografiche, ma questa volta vuole solo le colonne comuni a tutte e tre le tabelle. In precedenza, si è visto che l'operatore union restituisce tutte le colonne che presenti in una qualsiasi delle tabelle. Questo comportamento è l'impostazione predefinita dell'operatore union , denominato unione esterna, anche se è consigliabile specificare sempre in modo esplicito il tipo di unione per maggiore chiarezza.

Per restituire solo le colonne che si verificano in tutte le tabelle, usare un'unione interna sugli stessi dati simulati specificando l'argomento kind=inner :

  1. Eseguire la query seguente.

    Eseguire la query

    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
    

    I risultati dovrebbero essere simili a quelli nell'immagine seguente:

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

    Si noti che si ottengono tutte le righe delle tre tabelle e solo le colonne presenti in tutte le tabelle.

  2. Provare ora a modificare la query per aggiungere colonne più comuni estendendo ogni tabella con una colonna con lo stesso nome. Vedere quindi come vengono popolati i valori nei risultati.