Exercice : Combiner les résultats de tables en utilisant l’opérateur union
Dans cet exercice, vous utilisez l’opérateur union
pour combiner des faits de ventes qui ont été collectés dans différents pays/régions.
Utilisez l’opérateur union
Votre équipe commerciale vous demande de créer une seule table qui combine 10 résultats de ventes arbitraires provenant de chacun des pays/régions suivants : Australie, Royaume-Uni et États-Unis.
Utilisez l’instruction let
pour créer trois expressions tabulaires, chacune avec 10 enregistrements d’un pays/région spécifique, dans la table SalesFact, pour représenter les données des ventes de trois pays/régions. Vous pouvez les voir comme trois tables distinctes.
En examinant ces tables, vous pouvez voir qu’elles ont les mêmes colonnes. La seule différence réside dans les données de la colonne RegionCountryName
. Utilisez l’opérateur union
pour combiner les tables de faits des ventes pour le Royaume-Uni et les États-Unis à la table de faits des ventes pour l’Australie.
Exécutez la requête suivante.
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
Les résultats doivent ressembler à ceux de l’image suivante :
Notez que vous obtenez toutes les lignes des trois tables. Essayez de modifier la requête pour ajouter des données simulées pour la France et de les combiner avec les données des autres pays/régions.
Dans les sections suivantes, vous utilisez l’instruction let
pour créer des tables ad hoc qui simulent des données avec les colonnes nécessaires pour les scénarios.
Utiliser l’opérateur union
avec des tables qui ont des colonnes différentes
Le mois suivant, votre équipe commerciale vous demande à nouveau de créer les données des ventes des trois pays/régions. Lorsque vous examinez les tables cette fois, vous remarquez qu’elles ont des colonnes différentes. L’avantage de l’opérateur union
est qu’il combine des tables même si elles ont des colonnes différentes. Pour cette requête, vous utilisez l’autre syntaxe de l’opérateur union
qui ne nécessite pas d’entrée redirigée.
Exécutez la requête suivante.
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
Les résultats doivent ressembler à ceux de l’image suivante :
Notez que vous obtenez toutes les lignes des trois tables et toutes les colonnes qui se produisent dans l’une ou l’autre des tables. Les cellules qui n’ont pas été définies par une ligne d’entrée sont définies sur null. Essayez de modifier la requête pour ajouter d’autres colonnes et voir comment leurs valeurs sont renseignées dans les résultats.
Utiliser l’opérateur union
avec des tables qui ont des colonnes différentes et retourner uniquement les colonnes qui se produisent dans toutes les tables
Le mois suivant, votre équipe commerciale vous demande à nouveau de créer les données des ventes des trois pays/régions, mais cette fois, elle veut seulement les colonnes communes aux trois tables. Auparavant, vous avez vu que l’opérateur union
retourne toutes les colonnes qui se produisent dans l’une ou l’autre des tables. C’est le comportement par défaut de l’opérateur union
, appelé « union externe », même si c’est une meilleure pratique de toujours spécifier explicitement le type d’union pour plus de clarté.
Pour retourner seulement les colonnes présentes dans toutes les tables, vous utilisez une union interne sur les mêmes données simulées en spécifiant l’argument kind=inner
:
Exécutez la requête suivante.
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
Les résultats doivent ressembler à ceux de l’image suivante :
Notez que vous obtenez toutes les lignes des trois tables et seulement les colonnes qui se produisent dans toutes les tables.
Essayez maintenant de modifier la requête pour ajouter d’autres colonnes communes en étendant chaque table avec une colonne du même nom. Vous pouvez ensuite voir comment leurs valeurs sont remplies dans les résultats.