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.
Syntaxe
LeftTable|
join
[ kind
=
JoinFlavor ] [ Hints ] (
RightTable)
on
Conditions
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 ON ColumnName. 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
Contenu connexe
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