Junção entre clusters
Aplica-se a: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Uma junção entre clusters envolve a junção de dados de conjuntos de dados que residem em clusters diferentes.
Em uma junção entre clusters, a consulta pode ser executada em três locais possíveis, cada um com uma designação específica para referência em todo este documento:
- Cluster local: o cluster para o qual a solicitação é enviada, que também é conhecido como cluster que hospeda o banco de dados no contexto.
- Cluster esquerdo: o cluster que hospeda os dados no lado esquerdo da operação de junção.
- Cluster direito: o cluster que hospeda os dados no lado direito da operação de junção.
O cluster que executa a consulta busca os dados do outro cluster.
Observação
Se os dados nos lados esquerdo e direito de uma operação de junção estiverem hospedados no mesmo cluster, eles não serão considerados uma junção entre clusters, mesmo que os dados estejam hospedados fora do cluster local.
Sintaxe
cluster(
[ Nome_do_).database(
Cluster Nome_do_Banco]).
LeftTable ... |
|
join
hint.remote=
[ Estratégia ](
[ Nome_do_).database(
Cluster Nome_do_).
Banco de Dados]RightTable |
... cluster(
)
sobre Condições
Saiba mais sobre as convenções de sintaxe.
Parâmetros
Nome | Digitar | Obrigatória | Descrição |
---|---|---|---|
LeftTable | string |
✔️ | A tabela esquerda ou expressão tabular cujas linhas devem ser mescladas. Indicada como $left . |
Estratégia | string |
Determina o cluster no qual executar a junção. Os valores compatíveis são: left , right , local e auto . Para obter mais informações, consulte Estratégias. |
|
ClusterName | string |
Se os dados da junção residirem fora do cluster local, use a função cluster() para especificar o cluster. | |
DatabaseName | string |
Se os dados da junção residirem fora do contexto do banco de dados local, use a função database() para especificar o banco de dados. | |
RightTable | string |
✔️ | A tabela correta ou expressão tabular cujas linhas devem ser mescladas. Indicada como $right . |
Condições | string |
✔️ | Determina como as linhas de LeftTable correspondem com as linhas de RightTable. Se as colunas que você deseja corresponder tiverem o mesmo nome em ambas as tabelas, use a sintaxe ON ColumnName. Caso contrário, use a sintaxe ON $left. LeftColumn $right. == RightColumn. Para especificar várias condições, você pode usar a palavra-chave "and" ou separá-las com vírgulas. Se você usar vírgulas, as condições serão avaliadas usando o operador lógico "and". |
Estratégias
A lista a seguir explica os valores suportados para o parâmetro Strategy :
left
: Execute a junção no cluster da tabela esquerda ou cluster esquerdo.right
: Execute a junção no cluster da tabela direita ou do cluster direito.local
: Execute a junção no cluster do cluster atual ou no cluster local.auto
: (Padrão) Kusto toma a decisão de comunicação remota.
Observação
A dica de comunicação remota de junção será ignorada se a estratégia sugerida não for aplicável à operação de junção.
Como funciona a estratégia automotiva
Por padrão, a auto
estratégia determina onde a junção entre clusters deve ser executada com base nas seguintes regras:
- Se uma das tabelas estiver hospedada no cluster local, a junção será executada no cluster local.
- Se ambas as tabelas estiverem hospedadas fora do cluster local, a junção será executada no cluster direito.
Considere os seguintes exemplos:
// 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
Com a estratégia, o auto
"Exemplo 1" seria executado no cluster local. No "Exemplo 2", supondo que nenhum cluster seja o cluster local, a junção seria executada no cluster direito.
Considerações sobre o desempenho
Para obter o desempenho ideal, recomendamos executar a consulta no cluster que contém a maior tabela.
Vamos considerar os seguintes exemplos novamente:
// 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
O "Exemplo 1" está definido para ser executado no cluster local, mas se o conjunto de dados produzido por T | ...
for menor do que um produzido por cluster("B").database("DB").T2 | ...
então, seria mais eficiente executar a operação de junção no cluster B
, neste caso, o cluster certo, em vez de no cluster local.
A consulta a seguir faz isso usando a right
estratégia. Com a right
estratégia, a operação de junção é executada no cluster direito, mesmo que a tabela esquerda esteja no cluster local.
T | ... | join hint.remote=right (cluster("B").database("DB").T2 | ...) on Col1