Share via


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.

Capture d’écran de l’histogramme montrant les dommages à la propriété par habitant par état.

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