opérateur join
S’applique à : ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
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. La couleur de l’ombrage représente les colonnes retournées, et les zones ombrées représentent les lignes retournées.
Syntaxe
LeftTable join
|
[ kind
=
JoinFlavor ] [ Hints ] (
RightTable)
on
Conditions
En savoir plus sur les conventions de syntaxe.
Paramètres
Nom | Type | Requise | 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 l’espace sous la forme de valeur de nom = qui contrôlent le comportement de l’opération de correspondance de ligne 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 que vous souhaitez mettre en correspondance ont le même nom dans les deux tables, utilisez la syntaxe ON ColumnName. Sinon, utilisez la syntaxe ON $left. LeftColumn RightColumn == $right. . 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