Join tra clusterCross-cluster join

Per informazioni generali sulle query tra cluster, vedere query tra cluster o tra databaseFor general discussion on cross-cluster queries, see cross-cluster or cross-database queries

È possibile eseguire un'operazione di join sui set di impostazioni che risiedono in cluster diversi.It's possible to do join operation on datasets residing on different clusters. Ad esempio: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)

Nell'esempio precedente, l'operazione di join è un join tra cluster, supponendo che il cluster corrente non sia "SomeCluster" o "SomeCluster2".In the example above, the join operation is a cross-cluster join, assuming that current cluster isn't "SomeCluster" or "SomeCluster2".

Nell'esempio seguente:In the following example:

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

l'operazione di join non è un join tra cluster perché entrambi gli operandi hanno origine nello stesso cluster.the join operation isn't a cross-cluster join because both its operands originate on the same cluster.

Quando kusto rileva un join tra cluster, decide automaticamente dove eseguire l'operazione di join.When Kusto encounters a cross-cluster join, it will automatically decide where to execute the join operation itself. Questa decisione può avere uno dei tre possibili risultati:This decision can have one of the three possible outcomes:

  • Esecuzione dell'operazione di join sul cluster dell'operando di sinistra, l'operando destro verrà prima recuperato da questo cluster.Execute join operation on the cluster of the left operand, right operand will be first fetched by this cluster. (join nell'esempio (1) verrà eseguito nel cluster locale)(join in example (1) will be executed on the local cluster)
  • Operazione Execute join sul cluster dell'operando di destra, l'operando sinistro verrà prima recuperato da questo cluster.Execute join operation on the cluster of the right operand, left operand will be first fetched by this cluster. (join nell'esempio (2) verrà eseguito su "SomeCluster2")(join in example (2) will be executed on the "SomeCluster2")
  • Eseguire un'operazione di join localmente (ovvero nel cluster che ha ricevuto la query), entrambi gli operandi verranno recuperati prima dal cluster locale.Execute join operation locally (meaning on the cluster that received the query), both operands will be first fetched by the local cluster.

La decisione effettiva dipende dalla query specifica.The actual decision depends on the specific query. La strategia di comunicazione remota di join automatica è (versione semplificata): "Se uno degli operandi è locale, il join verrà eseguito localmente.The automatic join remoting strategy is (simplified version): "If one of the operands is local, join will be executed locally. Se entrambi gli operandi sono remoti, join verrà eseguito nel cluster dell'operando destro ".If both operands are remote, join will be executed on the cluster of the right operand".

A volte le prestazioni della query possono essere migliorate se la strategia di comunicazione remota automatica non viene seguita.Sometimes the performance of the query can be improved if automatic remoting strategy is not followed. In questo caso, eseguire un'operazione di join sul cluster dell'operando più grande.In this case, execute join operation on the cluster of the largest operand.

Se ad esempio (1) il set di dati generato da T | ... è molto più piccolo di uno prodotto da cluster("SomeCluster").database("SomeDB").T2 | ... , è più efficiente eseguire l'operazione di join su "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".

Per eseguire questa operazione, è possibile fornire un hint per la comunicazione remota di Kusto join.This operation can be done by giving Kusto join remoting hint. La sintassi è:The syntax is:

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

Di seguito sono riportati i valori validi perstrategyFollowing are legal values for strategy

  • left-eseguire un join sul cluster dell'operando sinistroleft - execute join on the cluster of the left operand
  • right-eseguire un join sul cluster dell'operando destroright - execute join on the cluster of the right operand
  • local-Esegui join nel cluster del cluster correntelocal - execute join on the cluster of the current cluster
  • auto-(impostazione predefinita) consentire a kusto di effettuare la decisione di comunicazione remota automaticaauto - (default) let Kusto make the automatic remoting decision

Nota

L'hint per la comunicazione remota di join verrà ignorato da kusto se la strategia hint non è applicabile all'operazione di join.The join remoting hint will be ignored by Kusto if the hinted strategy isn't applicable to the join operation.

Questa funzionalità non è supportata in monitoraggio di AzureThis capability isn't supported in Azure Monitor