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_|
)
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 estratégia de auto
determina onde a junção entre clusters é executada com base nas seguintes regras:
Se uma das tabelas estiver hospedada no cluster local, a junção será executada no cluster local. Por exemplo, com a estratégia automática, essa consulta é executada no cluster local:
T | ... | join (cluster("B").database("DB").T2 | ...) on Col1
Se ambas as tabelas estiverem hospedadas fora do cluster local, a junção será executada no cluster direito. Por exemplo, supondo que nenhum cluster seja o cluster local, a junção será executada no cluster direito:
cluster("B").database("DB").T | ... | join (cluster("C").database("DB2").T2 | ...) on Col1
Considerações sobre o desempenho
Para obter o desempenho ideal, recomendamos executar a consulta no cluster que contém a maior tabela.
No exemplo a seguir, 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
, nesse caso, o cluster certo em vez de no cluster local.
T | ... | join (cluster("B").database("DB").T2 | ...) on Col1
Você pode reescrever a consulta para usar hint.remote=right
para otimizar o desempenho. Dessa forma, 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