Übung: Kombinieren von Tabellenergebnissen mithilfe des union-Operators
In dieser Übung verwenden Sie den union
-Operator, um Umsatzfakten zu kombinieren, die aus verschiedenen Ländern/Regionen gesammelt wurden.
Verwenden Sie den union
-Operator
Ihr Vertriebsteam bittet Sie, eine einzelne Tabelle zu erstellen, in der 10 beliebige Umsätze aus allen folgenden Ländern/Regionen kombiniert werden: Australien, Vereinigtes Königreich und USA.
Verwenden Sie die let
-Anweisung, um drei tabellarische Ausdrücke zu erstellen, die jeweils 10 Datensätze aus einem bestimmten Land/einer Region in der Tabelle SalesFact enthalten, um Umsatzdaten aus drei Ländern/Regionen darzustellen. Sie können sich diese als drei separate Tabellen vorstellen.
Wenn Sie diese Tabellen untersuchen, stellen Sie fest, dass sie die gleichen Spalten aufweisen. Der einzige Unterschied sind die Daten in der RegionCountryName
-Spalte. Sie verwenden den union
-Operator, um die Umsatzfaktentabellen für das Vereinigte Königreich und die USA mit der Umsatzfaktentabelle für Australien zu kombinieren.
Führen Sie die folgende Abfrage aus.
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
Die Ergebnisse sollten wie im folgenden Bild aussehen:
Beachten Sie, dass Sie alle Zeilen aus den drei Tabellen abrufen. Versuchen Sie, die Abfrage zu ändern, um simulierte Daten für Frankreich hinzuzufügen und sie mit den Daten aus den anderen Ländern/Regionen zu kombinieren.
In den folgenden Abschnitten verwenden Sie die let
-Anweisung, um Ad-hoc-Tabellen zu erstellen, die Daten mit den für die Szenarien erforderlichen Spalten simulieren.
Verwenden des union
-Operators mit Tabellen mit unterschiedlichen Spalten
Im nächsten Monat fordert Ihr Vertriebsteam Sie erneut auf, die Umsatzdaten aus den drei Ländern/Regionen zu erstellen. Wenn Sie die Tabellen dieses Mal untersuchen, stellen Sie fest, dass sie unterschiedliche Spalten enthalten. Das Schöne am union
-Operator ist, dass er Tabellen selbst dann kombiniert, wenn sie unterschiedliche Spalten aufweisen. Für diese Abfrage verwenden Sie die alternative Syntax für den union
-Operator, für die keine Pipeeingabe erforderlich ist.
Führen Sie die folgende Abfrage aus.
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
Die Ergebnisse sollten wie im folgenden Bild aussehen:
Beachten Sie, dass Sie alle Zeilen aus den drei Tabellen und alle Spalten erhalten, die in einer der Tabellen vorkommen. Zellen, die nicht durch eine Eingabezeile definiert sind, werden auf NULL festgelegt. Versuchen Sie, die Abfrage zu ändern, um weitere Spalten hinzuzufügen und zu sehen, wie ihre Werte in den Ergebnissen mit Daten aufgefüllt werden.
Verwenden des union
-Operators mit Tabellen, die unterschiedliche Spalten enthalten, und Zurückgeben nur der Spalten, die in allen Tabellen vorkommen
Im folgenden Monat fordert Ihr Vertriebsteam Sie erneut auf, die Umsatzdaten aus den drei Ländern/Regionen zu erstellen, aber dieses Mal sollen nur die Spalten berücksichtigt werden, die allen drei Tabellen gemeinsam sind. Zuvor haben Sie gesehen, dass der union
-Operator alle Spalten zurückgibt, die in einer der Tabellen vorkommen. Dies ist das Standardverhalten des union
-Operators, das als „äußere Vereinigung“ bezeichnet wird, obwohl es eine bewährte Methode ist, die Art der Vereinigung aus Gründen der Klarheit immer explizit anzugeben.
Um nur die Spalten zurückzugeben, die in allen Tabellen vorkommen, verwenden Sie eine innere Vereinigung für die gleichen simulierten Daten, indem Sie das kind=inner
-Argument angeben:
Führen Sie die folgende Abfrage aus.
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
Die Ergebnisse sollten wie im folgenden Bild aussehen:
Beachten Sie, dass Sie alle Zeilen aus den drei Tabellen und nur die Spalten erhalten, die in allen Tabellen vorkommen.
Versuchen Sie nun, die Abfrage so zu ändern, dass mehr gemeinsame Spalten hinzugefügt werden, indem Sie jede Tabelle um eine Spalte mit demselben Namen erweitern. Sehen Sie sich dann an, wie ihre Werte in den Ergebnissen aufgefüllt werden.