Junção entre clusters
Uma junção entre clusters envolve a junção de dados de conjuntos de dados que residem em clusters diferentes.
Em uma associaçã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 o 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 associação entre clusters, mesmo que os dados estejam hospedados fora do cluster local.
Sintaxe
cluster(
[ ClusterName).database(
DatabaseName).
]LeftTable ... |
|
join
hint.remote=
[ Estratégia ](
cluster(
[ ClusterName).database(
DatabaseName).
]RightTable ... |
)
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 associaçã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 para a 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 ou expressão tabular direita 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 no cluster esquerdo.right
: Execute a associação no cluster da tabela direita ou cluster direito.local
: Execute a associaçã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 junção remota 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 associação entre clusters deve ser executada com base nas seguintes regras:
- Se uma das tabelas estiver hospedada no cluster local, a associação será executada no cluster local.
- Se ambas as tabelas estiverem hospedadas fora do cluster local, a associaçã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 tabela maior.
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" é definido para ser executado no cluster local, mas se o conjunto de dados produzido por T | ...
for menor do que um produzido até cluster("B").database("DB").T2 | ...
então, seria mais eficiente executar a operação de junção no cluster B
, neste caso o cluster direito, 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
Conteúdo relacionado
Essa funcionalidade não é compatível com o Azure Monitor
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de