opérateur join

Fusionnez les lignes de deux tables pour former une nouvelle table en mettant en correspondance les valeurs des colonnes spécifiées de chaque table.

Le langage de requête Kusto (KQL) fournit de nombreuses sortes de jointures, chacune d’elles déterminant de différentes manières le schéma et les lignes retournés dans la table de sortie. Par exemple, si vous utilisez une jointure inner, la table contient les mêmes colonnes que la table de gauche, plus les colonnes de la table de droite. Pour de meilleures performances, si une table est toujours plus petite que l’autre, utilisez-la à gauche de l’opérateur join.

L’image suivante offre une représentation visuelle de l’opération effectuée par chaque jointure.

Diagramme montrant les types de jointure de requête.

Syntaxe

LeftTable|join [ kind=JoinFlavor ] [ Hints ] (RightTable)onConditions

En savoir plus sur les conventions de syntaxe.

Paramètres

Nom Type Obligatoire Description
LeftTable string ✔️ La table de gauche ou expression tabulaire, parfois appelée « table externe », dont les lignes doivent être fusionnées. Désignée sous la forme suivante : $left.
JoinFlavor string Type de jointure à effectuer : innerunique, inner, leftouter, rightouter, fullouter, leftanti, rightanti, leftsemi, rightsemi. Par défaut, il s’agit de innerunique. Pour plus d’informations sur les saveurs de jointure, consultez Résultats.
Indicateurs string Zéro ou plusieurs indicateurs de jointure séparés par un espace, sous la forme Nom=Valeur, qui contrôlent le comportement de l’opération de mise en correspondance des lignes et du plan d’exécution. Pour plus d’informations, consultez Indicateurs.
RightTable string ✔️ La table de droite ou expression tabulaire, parfois appelée « table interne », dont les lignes doivent être fusionnées. Désignée sous la forme suivante : $right.
Conditions string ✔️ Détermine le mode de mise en correspondance des lignes de LeftTable avec les lignes de RightTable. Si les colonnes à mettre en correspondre ont le même nom dans les deux tables, utilisez la syntaxe ONColumnName. Sinon, utilisez la syntaxe ON $left.LeftColumn==$right.RightColumn. Pour spécifier plusieurs conditions, vous pouvez utiliser le mot clé « and » ou séparer les conditions par des virgules. Si vous utilisez des virgules, les conditions sont évaluées avec l’opérateur logique « and ».

Conseil

Pour des performances optimales, si une table est toujours plus petite que l’autre, utilisez-la pour le côté gauche de la jointure.

Indicateurs

Clé hint Valeurs Description
hint.remote auto, left, local, right Voir Jointure entre clusters
hint.strategy=broadcast Spécifie comment partager la charge de la requête sur les nœuds du cluster. Consultez Répartir une jointure.
hint.shufflekey=<key> La requête shufflekey partage la charge de requête sur les nœuds de cluster à l’aide d’une clé pour partitionner les données. Voir requête de lecture aléatoire
hint.strategy=shuffle La requête de stratégie shuffle partage la charge de requête sur les nœuds de cluster, où chaque nœud traite une partition des données. Voir requête de lecture aléatoire
Nom Valeurs Description
hint.remote auto, left, local, right
hint.strategy=broadcast Spécifie comment partager la charge de la requête sur les nœuds du cluster. Consultez Répartir une jointure.
hint.shufflekey=<key> La requête shufflekey partage la charge de requête sur les nœuds de cluster à l’aide d’une clé pour partitionner les données. Voir requête de lecture aléatoire
hint.strategy=shuffle La requête de stratégie shuffle partage la charge de requête sur les nœuds de cluster, où chaque nœud traite une partition des données. Voir requête de lecture aléatoire

Notes

Les indicateurs de jointure ne modifient pas la sémantique de join, mais peuvent impacter les performances.

Retours

Le schéma et les lignes retournés dépendent de la saveur de jointure. La saveur de jointure est spécifiée avec le mot clé kind. Le tableau suivant montre les variantes de jointure prises en charge. Pour afficher les exemples d’une variante de jointure spécifique, sélectionnez le lien dans la colonne Variante de jointure.

Saveur de jointure Retours Illustration
innerunique (saveur par défaut) Jointure interne avec déduplication du côté gauche
Schéma : toutes les colonnes des deux tables, y compris les clés correspondantes
Lignes : toutes les lignes dédupliquées de la table de gauche qui correspondent aux lignes de la table de droite
inner Jointure interne standard
Schéma : toutes les colonnes des deux tables, y compris les clés correspondantes
Lignes : seules les lignes correspondantes des deux tables
leftouter Jointure externe gauche
Schéma : toutes les colonnes des deux tables, y compris les clés correspondantes
Lignes : tous les enregistrements de la table de gauche et uniquement les lignes correspondantes de la table de droite
rightouter Jointure externe droite
Schéma : toutes les colonnes des deux tables, y compris les clés correspondantes
Lignes : tous les enregistrements de la table de droite et uniquement les lignes correspondantes de la table de gauche
fullouter Jointure externe entière
Schéma : toutes les colonnes des deux tables, y compris les clés correspondantes
Lignes : tous les enregistrements des deux tables avec des cellules sans correspondance remplies avec null
leftsemi Semi-jointure gauche
Schéma : toutes les colonnes de la table de gauche
Lignes : tous les enregistrements de la table de gauche qui correspondent aux enregistrements de la table de droite
leftanti, anti, leftantisemi Jointure anti gauche et semi-variante
Schéma : toutes les colonnes de la table de gauche
Lignes : tous les enregistrements de la table de gauche qui ne correspondent pas aux enregistrements de la table de droite
rightsemi Semi-jointure droite
Schéma : toutes les colonnes de la table de droite
Lignes : tous les enregistrements de la table de droite qui correspondent aux enregistrements de la table de gauche
rightanti, rightantisemi Jointure anti droite et semi-variante
Schéma : toutes les colonnes de la table de droite
Lignes : tous les enregistrements de la table de droite qui ne correspondent pas aux enregistrements de la table de gauche

Jointure croisée

KQL ne fournit pas de saveur de jointure croisée. Toutefois, vous pouvez obtenir un effet de jointure croisée en utilisant une clé placeholder.

Dans l’exemple suivant, une clé placeholder est ajoutée aux deux tables, puis elle est utilisée pour l’opération de jointure interne (inner), ce qui permet d’obtenir un comportement similaire à celui d’une jointure croisée :

X | extend placeholder=1 | join kind=inner (Y | extend placeholder=1) on placeholder