Tutoriel : Joindre des données à partir de plusieurs tables
Joindre des données de plusieurs tables permet une analyse plus complète en combinant des informations provenant de différentes sources et en créant de nouvelles relations entre les points de données. Dans le Langage de requête Kusto (KQL), les opérateurs de jointure et de recherche sont utilisés pour combiner des données entre des tables.
Ce didacticiel vous montre comment effectuer les opérations suivantes :
Les exemples de ce didacticiel utilisent le cluster d’aide disponible publiquement. Pour explorer avec vos propres données, créez votre propre cluster gratuit.
Prérequis
- Un compte Microsoft ou une identité d’utilisateur Microsoft Entra pour se connecter au cluster d’aide
Utiliser l’opérateur de jointure
La base de données Samples contient deux tables liées aux événements storm. L’un est appelé StormEvents
et l’autre est appelé PopulationData
. Dans cette section, vous allez joindre les tables pour effectuer une analyse des données qui ne serait pas possible avec une seule table.
Comprendre les données
Utilisez l’opérateur take pour voir les données que chaque table contient.
StormEvents
| take 5
Le tableau suivant montre seulement 6 des 22 colonnes retournées.
StartTime | EndTime | EpisodeId | EventId | État | Type d’événement | ... |
---|---|---|---|---|---|---|
2007-09-20T21 :57 :00Z | 2007-09-20T22 :05 :00Z | 11078 | 60913 | FLORIDE | Tornade | ... |
2007-12-20T07 :50 :00Z | 2007-12-20T07 :53 :00Z | 12554 | 68796 | MISSISSIPPI | Vent d’orage | ... |
2007-12-30T16 :00 :00Z | 2007-12-30T16 :05 :00Z | 11749 | 64588 | GEORGIE | Vent d’orage | ... |
2007-09-29T08 :11 :00Z | 2007-09-29T08 :11 :00Z | 11091 | 61032 | ATLANTIQUE SUD | Trombe marine | ... |
2007-09-18T20 :00 :00Z | 2007-09-19T18 :00 :00Z | 11074 | 60904 | FLORIDE | Fortes précipitations | ... |
PopulationData
| take 5
Sortie
State | Remplissage |
---|---|
ALABAMA | 4918690 |
ALASKA | 727951 |
ARIZONA | 7399410 |
ARKANSAS | 3025880 |
CALIFORNIE | 39562900 |
Les deux tables contiennent une State
colonne. La StormEvents
table comporte de nombreuses autres colonnes, et le PopulationData
n’a qu’une seule autre colonne qui contient la population de l’état donné.
Joindre les tables
Joignez la PopulationData
table avec StormEvents
sur la colonne commune State
pour trouver le total des dommages matériels causés par les tempêtes par habitant par état.
StormEvents
| summarize PropertyDamage = sum(DamageProperty) by State
| join kind=innerunique PopulationData on State
| project State, PropertyDamagePerCapita = PropertyDamage / Population
| sort by PropertyDamagePerCapita
Ajoutez | render columnchart
à la requête pour visualiser le résultat.
Conseil
Il existe de nombreux types de jointures que vous pouvez effectuer avec l’opérateur join
. Consultez la liste des versions de jointure.
Utiliser l’opérateur de recherche
L’opérateur de recherche optimise les performances des requêtes où une table de faits est enrichie avec les données d’une table de dimension. Cela étend la table de faits avec des valeurs recherchées dans une table de dimension. Pour de meilleures performances, le système suppose par défaut que la table de gauche est la plus grande table de faits, et que la table de droite est la table de dimension plus petite. Cela est exactement l’opposé de l’hypothèse utilisée par l’opérateur join
.
Dans le cluster d’aide, il existe une autre base de données appelée ContosoSales
qui contient des données de ventes. La requête suivante utilise lookup
pour fusionner les SalesFact
tables et Products
de cette base de données afin d’obtenir le total des ventes par catégorie de produit.
SalesFact
| lookup Products on ProductKey
| summarize TotalSales = count() by ProductCategoryName
| order by TotalSales desc
Sortie
ProductCategoryName | TotalSales |
---|---|
Games and Toys | 966782 |
TV and Video | 715024 |
Cameras and camcorders | 323003 |
Ordinateurs | 313487 |
Home Appliances | 237508 |
Audio | 192671 |
Cell phones | 50342 |
Music, Movies and Audio Books | 33376 |
Notes
L’opérateur lookup
prend uniquement en charge deux versions de jointure : leftouter
et inner
.
Joindre des tables générées par une requête
Les jointures peuvent également être effectuées en fonction des résultats de requête de la même table.
Supposons que vous souhaitiez créer une liste des états dans lesquels des événements de foudre et d’avalanche se sont produits. Utilisez l’opérateur de jointure pour fusionner les lignes de deux tables, l’une contenant des données sur les événements de foudre et l’autre contenant des données sur les événements d’avalanche, en fonction de la State
colonne.
StormEvents
| where EventType == "Lightning"
| distinct State
| join kind=inner (
StormEvents
| where EventType == "Avalanche"
| distinct State
)
on State
| project State
Sortie
State |
---|
OREGON |
UTAH |
WYOMING |
WASHINGTON |
COLORADO |
IDAHO |
NEVADA |
Contenu connexe
- En savoir plus sur les différents types d’opérateur de jointure
- Découvrez comment effectuer des requêtes inter-bases de données et inter-clusters
- Suivez le tutoriel créer des visualisations géospatiales
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour