operador join
Aplica-se a: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Mescle as linhas das duas tabelas para formar uma nova tabela, correspondendo os valores das colunas especificadas de cada tabela.
A KQL (Linguagem de Consulta Kusto) oferece muitos tipos de junções que afetam o esquema e as linhas na tabela resultante de diferentes maneiras. Por exemplo, se você usa uma junção inner
, a tabela tem as mesmas colunas que a tabela esquerda mais as colunas da tabela direita. Para ter o melhor desempenho, se uma tabela sempre for menor do que a outra, use-a como o lado esquerdo do operador join
.
A imagem a seguir fornece uma representação visual da operação executada por cada junção. A cor do sombreamento representa as colunas retornadas e as áreas sombreadas representam as linhas retornadas.
Sintaxe
LeftTable |
join
[ =
kind
JoinFlavor ] [ Dicas ](
Condições RightTable)
on
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, às vezes chamada de tabela externa, cujas linhas serão mescladas. Indicada como $left . |
JoinFlavor | string |
O tipo de junção a ser executada: innerunique , inner , leftouter , rightouter , fullouter , leftanti , rightanti , leftsemi , rightsemi . O padrão é innerunique . Para obter mais informações sobre os tipos de junção, confira Retornos. |
|
Dicas | string |
Zero ou mais dicas de junção separadas por espaço na forma de Valor de Nome = que controlam o comportamento da operação de correspondência de linha e do plano de execução. Para mais informações, confira Dicas. |
|
RightTable | string |
✔️ | A tabela direita ou expressão tabular, às vezes chamada de tabela interna, cujas linhas serão 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". |
Dica
Para ter o melhor desempenho, se uma tabela sempre for menor do que a outra, use-a como o lado esquerdo da junção.
Dicas
Chave de dica | Valores | Descrição |
---|---|---|
hint.remote |
auto , left , local , right |
Confira Junção entre clusters |
hint.strategy=broadcast |
Especifica como compartilhar a carga de consulta em nós de cluster. | Confira a junção de transmissão |
hint.shufflekey=<key> |
A consulta shufflekey compartilha a carga de consulta em nós de cluster usando uma chave para particionar dados. |
Confira a consulta aleatória |
hint.strategy=shuffle |
A consulta de estratégia shuffle compartilha a carga de consulta em nós de cluster, em que cada nó processará uma partição dos dados. |
Confira a consulta aleatória |
Nome | Valores | Descrição |
---|---|---|
hint.remote |
auto , left , local , right |
|
hint.strategy=broadcast |
Especifica como compartilhar a carga de consulta em nós de cluster. | Confira a junção de transmissão |
hint.shufflekey=<key> |
A consulta shufflekey compartilha a carga de consulta em nós de cluster usando uma chave para particionar dados. |
Confira a consulta aleatória |
hint.strategy=shuffle |
A consulta de estratégia shuffle compartilha a carga de consulta em nós de cluster, em que cada nó processará uma partição dos dados. |
Confira a consulta aleatória |
Observação
As dicas de junção não alteram a semântica de join
, mas podem afetar o desempenho.
Retornos
O esquema de retorno e as linhas dependem do tipo de junção. O tipo de junção é especificado com a palavra-chave kind. A tabela a seguir mostra as variantes de junção compatíveis. Para ver exemplos de uma variante de junção específico, selecione o link na coluna Variante de junção.
Tipo de junção | Retornos | Ilustração |
---|---|---|
innerunique (padrão) | Junção interna com eliminação de duplicação no lado esquerdo Esquema: todas as colunas de ambas as tabelas, incluindo as chaves correspondentes Linhas: todas as linhas com eliminação de duplicação da tabela esquerda que correspondem a linhas da tabela direita |
|
inner | Junção interna padrão Esquema: todas as colunas de ambas as tabelas, incluindo as chaves correspondentes Linhas: somente linhas correspondentes das duas tabelas |
|
leftouter | Junção externa esquerda Esquema: todas as colunas de ambas as tabelas, incluindo as chaves correspondentes Linhas: todos os registros da tabela esquerda e apenas linhas correspondentes da tabela direita |
|
rightouter | Junção externa direita Esquema: todas as colunas de ambas as tabelas, incluindo as chaves correspondentes Linhas: todos os registros da tabela direita e apenas linhas correspondentes da tabela esquerda |
|
fullouter | Junção externa completa Esquema: todas as colunas de ambas as tabelas, incluindo as chaves correspondentes Linhas: todos os registros de ambas as tabelas com células não correspondentes preenchidas com nulo |
|
leftsemi | Semijunção à esquerda Esquema: todas as colunas da tabela esquerda Linhas: todos os registros da tabela esquerda que correspondem aos registros da tabela direita |
|
leftanti , anti , leftantisemi |
Antijunção esquerda e semivariante Esquema: todas as colunas da tabela esquerda Linhas: todos os registros da tabela esquerda que não correspondem aos registros da tabela direita |
|
rightsemi | Semijunção à direita Esquema: todas as colunas da tabela direita Linhas: todos os registros da tabela direita que correspondem aos registros da tabela esquerda |
|
rightanti , rightantisemi |
Antijunção direita e semivariante Esquema: todas as colunas da tabela direita Linhas: todos os registros da tabela esquerda que não correspondem aos registros da tabela esquerda |
Junção cruzada
A KQL não conta com um tipo de junção cruzada. No entanto, você pode obter um efeito de junção cruzada usando uma abordagem de chave de espaço reservado.
No exemplo a seguir, uma chave de espaço reservado é adicionada a ambas as tabelas e, em seguida, usada para a operação de junção interna, obtendo efetivamente um comportamento semelhante à junção cruzada:
X | extend placeholder=1 | join kind=inner (Y | extend placeholder=1) on placeholder