operador join

Intercale as linhas de duas tabelas para formar uma nova tabela ao corresponder os valores das colunas especificadas de cada tabela.

Linguagem de Pesquisa Kusto (KQL) oferece vários tipos de associações que afetam o esquema e as linhas na tabela resultante de formas diferentes. Por exemplo, se utilizar uma associação inner , a tabela tem as mesmas colunas que a tabela esquerda, além das colunas da tabela à direita. Para um melhor desempenho, se uma tabela for sempre mais pequena do que a outra, utilize-a como o lado esquerdo do join operador.

A imagem seguinte fornece uma representação visual da operação executada por cada associação.

Diagrama a mostrar os tipos de associação de consultas.

Syntax

|joinTabela Esquerda [ kind=JoinFlavor ] [ Hints ] (RightTable)onConditions

Saiba mais sobre as convenções de sintaxe.

Parâmetros

Nome Tipo Necessário Descrição
Tabela Esquerda string ✔️ A tabela esquerda ou expressão tabular, por vezes denominada tabela externa, cujas linhas devem ser intercaladas. Denotado como $left.
JoinFlavor string O tipo de associação a executar: innerunique, , inner, leftouterrightouter, fullouter, leftanti, rightanti, , . rightsemileftsemi A predefinição é innerunique. Para obter mais informações sobre tipos de associação, consulte Devoluções.
Sugestões string Zero ou mais sugestões de associação separadas por espaço sob a forma deValor de Nome= que controlam o comportamento da operação de correspondência de linhas e do plano de execução. Para obter mais informações, veja Sugestões.
Tabela Direita string ✔️ A tabela à direita ou expressão tabular, por vezes denominada tabela interna, cujas linhas devem ser intercaladas. Denotado como $right.
Condições string ✔️ Determina a forma como as linhas de LeftTable são correspondidas com linhas de RightTable. Se as colunas que pretende corresponder tiverem o mesmo nome em ambas as tabelas, utilize a sintaxe ONColumnName. 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".

Dica

Para um melhor desempenho, se uma tabela for sempre mais pequena do que a outra, utilize-a como o lado esquerdo da associação.

Sugestões

Tecla de sugestão Valores Descrição
hint.remote auto, left, local, right Veja Associação Entre Clusters
hint.strategy=broadcast Especifica a forma de partilhar a carga de consulta em nós de cluster. Ver a associação de difusão
hint.shufflekey=<key> A shufflekey consulta partilha o carregamento da consulta em nós de cluster, utilizando uma chave para particionar dados. Ver consulta aleatória
hint.strategy=shuffle A shuffle consulta de estratégia partilha a carga de consulta em nós de cluster, onde cada nó processa uma partição dos dados. Ver consulta aleatória
Name Valores Descrição
hint.remote auto, left, local, right
hint.strategy=broadcast Especifica a forma de partilhar a carga de consulta em nós de cluster. Ver a associação de difusão
hint.shufflekey=<key> A shufflekey consulta partilha o carregamento da consulta em nós de cluster, utilizando uma chave para particionar dados. Ver consulta aleatória
hint.strategy=shuffle A shuffle consulta de estratégia partilha a carga de consulta em nós de cluster, onde cada nó processa uma partição dos dados. Ver consulta aleatória

Nota

As sugestões de associação não alteram a semântica de join , mas podem afetar o desempenho.

Devoluções

O esquema de retorno e as linhas dependem do sabor da associação. O sabor da associação é especificado com a palavra-chave do tipo . A tabela seguinte mostra os tipos de associação suportados. Para ver exemplos de um sabor de associação específico, selecione a ligação na coluna Sabor da associação.

Sabor da associação Devoluções Ilustração
innerunique (predefinição) Associação interna com eliminação de duplicados do lado esquerdo
Esquema: todas as colunas de ambas as tabelas, incluindo as chaves correspondentes
Linhas: todas as linhas com eliminação de duplicados da tabela esquerda que correspondem às linhas da tabela à direita
interior Associação interna padrão
Esquema: todas as colunas de ambas as tabelas, incluindo as chaves correspondentes
Linhas: apenas linhas correspondentes de ambas as tabelas
leftouter Associação externa à esquerda
Esquema: todas as colunas de ambas as tabelas, incluindo as chaves correspondentes
Linhas: todos os registos da tabela esquerda e apenas linhas correspondentes da tabela direita
rightouter Associação externa à direita
Esquema: todas as colunas de ambas as tabelas, incluindo as chaves correspondentes
Linhas: todos os registos da tabela direita e apenas linhas correspondentes da tabela esquerda
fullouter Associação externa completa
Esquema: todas as colunas de ambas as tabelas, incluindo as chaves correspondentes
Linhas: todos os registos de ambas as tabelas com células sem correspondência preenchidas com nulo
leftsemi Semi-associação à esquerda
Esquema: Todas as colunas da tabela esquerda
Linhas: todos os registos da tabela esquerda que correspondem aos registos da tabela direita
leftanti, anti, leftantisemi Anti-associação à esquerda e semi variante
Esquema: Todas as colunas da tabela esquerda
Linhas: todos os registos da tabela esquerda que não correspondem a registos da tabela à direita
rightsemi Semi-associação à direita
Esquema: Todas as colunas da tabela direita
Linhas: todos os registos da tabela direita que correspondem aos registos da tabela esquerda
rightanti, rightantisemi Anti-associação à direita e semi variante
Esquema: Todas as colunas da tabela direita
Linhas: todos os registos da tabela direita que não correspondem a registos da tabela esquerda

Associação cruzada

A KQL não fornece um sabor de associação cruzada. No entanto, pode obter um efeito de associação cruzada com uma abordagem de chave de marcador de posição.

No exemplo seguinte, é adicionada uma chave de marcador de posição a ambas as tabelas e, em seguida, utilizada para a operação de associação interna, conseguindo efetivamente um comportamento de associação cruzada:

X | extend placeholder=1 | join kind=inner (Y | extend placeholder=1) on placeholder