Partager via


Tutoriel : Joindre des données à partir de plusieurs tables

S’applique à : ✅Microsoft Fabric✅Azure Data ExplorerAzure MonitorMicrosoft Sentinel

La jonction de données à partir 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 des 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 la StormEvents table, qui est publiquement disponible dans le cluster d’aide. Pour explorer vos propres données, créez votre propre cluster gratuit.

Les exemples de ce didacticiel utilisent la StormEvents table, qui est publiquement disponible dans les exemples de données d’analyse météorologique.

Prérequis

Pour exécuter les requêtes suivantes, vous avez besoin d’un environnement de requête avec accès aux exemples de données. Vous pouvez utiliser l'un des éléments suivants :

  • Un compte Microsoft ou une identité d’utilisateur Microsoft Entra pour vous connecter au cluster d’aide

Utiliser l’opérateur de jointure

Il existe deux tables dans la base de données Samples 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 quelles données chaque table contient.

StormEvents 
| take 5

Le tableau suivant affiche uniquement 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 12,554 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 colonnes supplémentaires et PopulationData n’a qu’une seule autre colonne qui contient la population de l’état donné.

Joindre les tables

Joignez la PopulationData table à StormEvents la colonne commune State pour trouver le total des dommages 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 du histogramme montrant les dommages aux biens 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 saveurs 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 des données d’une table de dimension. Cela étend la table de faits avec des valeurs recherchées dans une table de dimension. Pour des performances optimales, le système suppose par défaut que la table de gauche est la table de faits supérieure 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 vente. La requête suivante utilise lookup pour fusionner les tables et Products les SalesFact tables de cette base de données pour 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
Jeux et jouets 966782
TV et vidéo 715024
Caméras et caméscopes 323003
Ordinateurs 313487
Équipements pour la maison 237508
Audio 192671
Cell phones 50342
Musique, films et livres audio 33376

Remarque

L’opérateur lookup prend uniquement en charge deux saveurs 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.

Dites que vous voulez créer une liste d’é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 ( une contenant des données sur les événements éclairs 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