Join tra cluster
Un join tra cluster prevede l'aggiunta di dati da set di dati che risiedono in cluster diversi.
In un join tra cluster la query può essere eseguita in tre posizioni possibili, ognuna con una designazione specifica per riferimento in questo documento:
- Cluster locale: cluster a cui viene inviata la richiesta, noto anche come cluster che ospita il database nel contesto.
- Cluster sinistro: il cluster che ospita i dati sul lato sinistro dell'operazione di join.
- Cluster destro: il cluster che ospita i dati sul lato destro dell'operazione di join.
Il cluster che esegue la query recupera i dati dall'altro cluster.
Nota
Se i dati a sinistra e a destra di un'operazione di join sono ospitati nello stesso cluster, non viene considerato un join tra cluster, anche se i dati sono ospitati all'esterno del cluster locale.
Sintassi
[ cluster(
ClusterName DatabaseName).database(
).
]LeftTable|
...
|
join
[ hint.remote=
Strategia ] (
[ cluster(
ClusterName DatabaseName).database(
).
]RightTable|
...
)
sulle condizioni
Altre informazioni sulle convenzioni di sintassi.
Parametri
Nome | Tipo | Obbligatoria | Descrizione |
---|---|---|---|
LeftTable | string |
✔️ | Tabella sinistra o espressione tabulare le cui righe devono essere unite. Indicata come $left . |
Strategia | string |
Determina il cluster in cui eseguire il join. I valori supportati sono: left , right , local e auto . Per altre informazioni, vedere Strategie. |
|
ClusterName | string |
Se i dati per il join si trovano all'esterno del cluster locale, usare la funzione cluster() per specificare il cluster. | |
DatabaseName | string |
Se i dati per il join si trovano all'esterno del contesto del database locale, usare la funzione database() per specificare il database. | |
RightTable | string |
✔️ | Tabella destra o espressione tabulare le cui righe devono essere unite. Indicata come $right . |
Condizioni | string |
✔️ | Determina la corrispondenza delle righe da LeftTable con righe da RightTable. Se le colonne corrispondenti hanno lo stesso nome in entrambe le tabelle, usare la sintassi ON ColumnName. In caso contrario, usare la sintassi ON $left. LeftColumn RightColumn== $right. . Per specificare più condizioni, è possibile usare la parola chiave "and" o separarle con virgole. Se si usano virgole, le condizioni vengono valutate usando l'operatore logico "e". |
Strategie
Nell'elenco seguente vengono illustrati i valori supportati per il parametro Strategia :
left
: eseguire join nel cluster della tabella sinistra o del cluster sinistro.right
: eseguire l'join nel cluster della tabella a destra o nel cluster destro.local
: eseguire l'join nel cluster del cluster corrente o nel cluster locale.auto
: (Impostazione predefinita) Kusto prende la decisione di comunicazione remota.
Nota
L'hint di comunicazione remota join viene ignorato se la strategia di hint non è applicabile all'operazione di join.
Funzionamento della strategia automatica
Per impostazione predefinita, la auto
strategia determina la posizione in cui è necessario eseguire il join tra cluster in base alle regole seguenti:
- Se una delle tabelle è ospitata nel cluster locale, il join viene eseguito nel cluster locale.
- Se entrambe le tabelle sono ospitate all'esterno del cluster locale, il join viene eseguito nel cluster destro.
Considera gli esempi che seguono:
// Example 1
T | ... | join (cluster("B").database("DB").T2 | ...) on Col1
// Example 2
cluster("B").database("DB").T | ... | join (cluster("C").database("DB2").T2 | ...) on Col1
Con la auto
strategia , "Esempio 1" verrà eseguito nel cluster locale. In "Esempio 2", presupponendo che nessuno dei cluster sia il cluster locale, il join verrà eseguito nel cluster destro.
Considerazioni sulle prestazioni
Per prestazioni ottimali, è consigliabile eseguire la query nel cluster contenente la tabella più grande.
Si considerino di nuovo gli esempi seguenti:
// Example 1
T | ... | join (cluster("B").database("DB").T2 | ...) on Col1
// Example 2
cluster("B").database("DB").T | ... | join (cluster("C").database("DB2").T2 | ...) on Col1
"Esempio 1" è impostato per l'esecuzione nel cluster locale, ma se il set di dati prodotto da T | ...
è minore di uno prodotto da cluster("B").database("DB").T2 | ...
allora sarebbe più efficiente eseguire l'operazione di join nel B
cluster , in questo caso il cluster corretto, anziché nel cluster locale.
La query seguente esegue questa operazione usando la right
strategia. Con la right
strategia, l'operazione di join viene eseguita nel cluster destro, anche se la tabella sinistra si trova nel cluster locale.
T | ... | join hint.remote=right (cluster("B").database("DB").T2 | ...) on Col1
Contenuti correlati
Questa funzionalità non è supportata in Monitoraggio di Azure
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: nel corso del 2024 verranno dismessi i problemi di GitHub come meccanismo di feedback per il contenuto e verranno sostituiti con un nuovo sistema di feedback. Per altre informazioni, vedere:Invia e visualizza il feedback per