Associação entre clusters
Uma associação entre clusters envolve a associação de dados de conjuntos de dados que residem em clusters diferentes.
Numa associação entre clusters, a consulta pode ser executada em três localizações possíveis, cada uma com uma designação específica para referência ao longo deste documento:
- Cluster local: o cluster para o qual o pedido é enviado, que também é conhecido como o cluster que aloja a base de dados em contexto.
- Cluster esquerdo: o cluster que aloja os dados no lado esquerdo da operação de associação.
- Cluster direito: o cluster que aloja os dados no lado direito da operação de associação.
O cluster que executa a consulta obtém os dados do outro cluster.
Nota
Se os dados no lado esquerdo e direito de uma operação de associação estiverem alojados no mesmo cluster, não são considerados uma associação entre clusters, mesmo que os dados estejam alojados 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 | Necessário | Descrição |
---|---|---|---|
LeftTable | string |
✔️ | A tabela esquerda ou expressão tabular cujas linhas devem ser intercaladas. Indicado como $left . |
Estratégia | string |
Determina o cluster no qual deve executar a associação. Os valores suportados são: left , , right local e auto . Para obter mais informações, veja Estratégias. |
|
ClusterName | string |
Se os dados da associação residiram fora do cluster local, utilize a função cluster() para especificar o cluster. | |
DatabaseName | string |
Se os dados da associação residiram fora do contexto da base de dados local, utilize a função database() para especificar a base de dados. | |
Tabela Direita | string |
✔️ | A tabela ou expressão tabular direita cujas linhas devem ser intercaladas. Indicado como $right . |
Condições | string |
✔️ | Determina como as linhas de LeftTable são correspondidas com linhas da Tabela Direita. Se as colunas que pretende corresponder tiverem o mesmo nome em ambas as tabelas, utilize a sintaxe ON ColumnName. Caso contrário, utilize a sintaxe ON $left. LeftColumn== $right. RightColumn. Para especificar várias condições, pode utilizar a palavra-chave "e" ou separá-las com vírgulas. Se utilizar vírgulas, as condições são avaliadas com o operador lógico "e". |
Estratégias
A lista seguinte explica os valores suportados para o parâmetro Estratégia :
left
: execute a associação no cluster da tabela esquerda ou no cluster esquerdo.right
: execute a associação no cluster da tabela direita ou no cluster direito.local
: execute a associação no cluster do cluster atual ou no cluster local.auto
: (Predefinição) O Kusto toma a decisão de remo.
Nota
A sugestão de remoting de associação é ignorada se a estratégia sugerida não for aplicável à operação de associação.
Como funciona a estratégia automática
Por predefiniçã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 alojada no cluster local, a associação é efetuada no cluster local.
- Se ambas as tabelas estiverem alojadas fora do cluster local, a associação é realizada no cluster certo.
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", assumindo que nenhum dos clusters é o cluster local, a associação seria executada no cluster certo.
Considerações de desempenho
Para um desempenho ideal, recomendamos que execute 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
"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 até cluster("B").database("DB").T2 | ...
então, seria mais eficiente executar a operação de associação no cluster B
, neste caso o cluster certo, em vez de no cluster local.
A seguinte consulta faz isto ao utilizar a right
estratégia. Com a right
estratégia, a operação de associaçã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
Esta capacidade não é suportada no Azure Monitor
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários