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 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 ao longo deste 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 no lado 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.
Syntax
[ cluster(
ClusterName).database(
DatabaseName).
]LeftTable|
...
|
join
[ hint.remote=
Estratégia ] (
[ cluster(
ClusterName).database(
DatabaseName).
]RightTable|
...
)
em Condições
Saiba mais sobre as convenções de sintaxe.
Parâmetros
Nome | Tipo | Obrigatório | Descrição |
---|---|---|---|
LeftTable | string |
✔️ | A tabela esquerda ou a 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 à direita ou a 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 com suporte para o parâmetro Strategy :
left
: execute join no cluster da tabela esquerda ou no cluster esquerdo.right
: execute join no cluster da tabela à direita ou no cluster direito.local
: execute join no cluster do cluster atual ou cluster local.auto
: (Padrão) 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 automática
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 correto.
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 auto
estratégia, "Exemplo 1" seria executado no cluster local. Em "Exemplo 2", supondo que nenhum cluster seja o cluster local, a junção será 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" é definido para ser executado no cluster local, mas se o conjunto de dados produzido por T | ...
for menor que um produzido por cluster("B").database("DB").T2 | ...
, será mais eficiente executar a operação de junção no cluster B
, nesse caso, o cluster correto, 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