Jointure entre clustersCross-cluster join

Pour une discussion générale sur les requêtes entre clusters, consultez requêtes entre clusters ou entre bases de données .For general discussion on cross-cluster queries, see cross-cluster or cross-database queries

Il est possible d’effectuer une opération de jointure sur des jeux de données résidant sur des clusters différents.It's possible to do join operation on datasets residing on different clusters. Par exemple :For example:

T | ... | join (cluster("SomeCluster").database("SomeDB").T2 | ...) on Col1 // (1)

cluster("SomeCluster").database("SomeDB").T | ... | join (cluster("SomeCluster2").database("SomeDB2").T2 | ...) on Col1 // (2)

Dans l’exemple ci-dessus, l’opération de jointure est une jointure entre clusters, en supposant que le cluster actuel n’est pas « SomeCluster » ou « SomeCluster2 ».In the example above, the join operation is a cross-cluster join, assuming that current cluster isn't "SomeCluster" or "SomeCluster2".

Dans l’exemple suivant :In the following example:

cluster("SomeCluster").database("SomeDB").T | ... | join (cluster("SomeCluster").database("SomeDB2").T2 | ...) on Col1 

l’opération de jointure n’est pas une jointure entre clusters, car ses opérandes proviennent du même cluster.the join operation isn't a cross-cluster join because both its operands originate on the same cluster.

Quand Kusto rencontre une jointure entre clusters, il détermine automatiquement l’emplacement d’exécution de l’opération de jointure.When Kusto encounters a cross-cluster join, it will automatically decide where to execute the join operation itself. Cette décision peut avoir l’un des trois résultats possibles :This decision can have one of the three possible outcomes:

  • Opération d’exécution de jointure sur le cluster de l’opérande de gauche, l’opérande de droite sera d’abord récupéré par ce cluster.Execute join operation on the cluster of the left operand, right operand will be first fetched by this cluster. (l’exemple de jointure (1) sera exécuté sur le cluster local)(join in example (1) will be executed on the local cluster)
  • Opération d’exécution de jointure sur le cluster de l’opérande de droite, l’opérande de gauche sera d’abord récupéré par ce cluster.Execute join operation on the cluster of the right operand, left operand will be first fetched by this cluster. (l’exemple de jointure (2) sera exécuté sur « SomeCluster2 »)(join in example (2) will be executed on the "SomeCluster2")
  • Exécuter une opération de jointure localement (c’est-à-dire sur le cluster qui a reçu la requête), les deux opérandes sont d’abord récupérés par le cluster local.Execute join operation locally (meaning on the cluster that received the query), both operands will be first fetched by the local cluster.

La décision réelle dépend de la requête spécifique.The actual decision depends on the specific query. La stratégie de communication à distance de jointure automatique est (version simplifiée) : «si l’un des opérandes est local, Join sera exécuté localement.The automatic join remoting strategy is (simplified version): "If one of the operands is local, join will be executed locally. Si les deux opérandes sont distants, la jointure est exécutée sur le cluster de l’opérande de droite».If both operands are remote, join will be executed on the cluster of the right operand".

Parfois, les performances de la requête peuvent être améliorées si la stratégie de communication à distance automatique n’est pas respectée.Sometimes the performance of the query can be improved if automatic remoting strategy is not followed. Dans ce cas, exécutez l’opération JOIN sur le cluster de l’opérande le plus grand.In this case, execute join operation on the cluster of the largest operand.

Si, par exemple (1) , le jeu de données produit par T | ... est bien plus petit que celui produit par cluster("SomeCluster").database("SomeDB").T2 | ... , il est plus efficace d’exécuter l’opération de jointure sur « SomeCluster ».If in example (1) the dataset produced by T | ... is much smaller than one produced by cluster("SomeCluster").database("SomeDB").T2 | ..., it is more efficient to execute join operation on "SomeCluster".

Cette opération peut être effectuée en donnant à Kusto Join l’indicateur de communication à distance.This operation can be done by giving Kusto join remoting hint. La syntaxe est :The syntax is:

T | ... | join hint.remote=<strategy> (cluster("SomeCluster").database("SomeDB").T2 | ...) on Col1

Voici les valeurs autorisées pour strategyFollowing are legal values for strategy

  • left -exécuter Join sur le cluster de l’opérande gaucheleft - execute join on the cluster of the left operand
  • right -exécuter Join sur le cluster de l’opérande de droiteright - execute join on the cluster of the right operand
  • local -exécuter Join sur le cluster du cluster actiflocal - execute join on the cluster of the current cluster
  • auto -(par défaut) laisser Kusto prendre la décision de communication à distance automatiqueauto - (default) let Kusto make the automatic remoting decision

Notes

L’indicateur de communication à distance Join sera ignoré par Kusto si la stratégie avec indicateur n’est pas applicable à l’opération de jointure.The join remoting hint will be ignored by Kusto if the hinted strategy isn't applicable to the join operation.

Cette fonctionnalité n’est pas prise en charge dans Azure MonitorThis capability isn't supported in Azure Monitor