Partilhar via


Junte-se ao operador

Aplica-se a: ✅Microsoft FabricAzure Data ExplorerAzure MonitorMicrosoft Sentinel

Mescle as linhas de duas tabelas para formar uma nova tabela combinando valores das colunas especificadas de cada tabela.

Kusto Query Language (KQL) oferece muitos tipos de junções que afetam o esquema e as linhas na tabela resultante de maneiras diferentes. Por exemplo, se você usar uma inner associação, a tabela terá as mesmas colunas que a tabela esquerda, além das colunas da tabela direita. Para obter o melhor desempenho, se uma tabela for sempre menor que a outra, use-a como o lado esquerdo do join operador.

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.

Diagrama mostrando tipos de junção de consulta.

Sintaxe

Tabela Esquerda|joinkind=[ JoinFlavor ] [ Dicas ] (Condições RightTable)on

Saiba mais sobre convenções de sintaxe.

Parâmetros

Nome Tipo Obrigatório Description
Tabela Esquerda string ✔️ A tabela esquerda ou expressão tabular, às vezes chamada de tabela externa, cujas linhas devem ser mescladas. Denotado como $left.
JoinFlavor string O tipo de junção a realizar: innerunique, inner, , leftouter, rightouter, leftantifullouter, rightanti, leftsemi, rightsemi. A predefinição é innerunique. Para obter mais informações sobre sabores de junção, consulte Devoluções.
Dicas string Zero ou mais dicas de junção separadas por espaço na 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, consulte Dicas.
Tabela Direita string ✔️ A tabela direita ou expressão tabular, às vezes chamada de tabela interna, cujas linhas devem ser mescladas. Denotado como $right.
Condições string ✔️ Determina como as linhas de LeftTable são correspondidas com as linhas de RightTable. Se as colunas que você deseja corresponder tiverem o mesmo nome em ambas as tabelas, use a sintaxe ONColumnName. Caso contrário, use a sintaxe ON $left.LeftColumn==$right.RightColumn. Para especificar várias condições, você pode usar a palavra-chave "e" ou separá-las com vírgulas. Se você usar vírgulas, as condições serão avaliadas usando o operador lógico "e".

Sugestão

Para obter o melhor desempenho, se uma mesa for sempre menor que a outra, use-a como o lado esquerdo da junção.

Hints

Tecla de dica Valores Description
hint.remote auto, left, local, right Consulte Ingresso entre clusters
hint.strategy=broadcast Especifica a maneira de compartilhar a carga de consulta em nós de cluster. Ver transmissão participar
hint.shufflekey=<key> A shufflekey consulta compartilha a carga de consulta em nós de cluster, usando uma chave para particionar dados. Ver consulta aleatória
hint.strategy=shuffle A shuffle consulta de estratégia compartilha a carga de consulta em nós de cluster, onde cada nó processa uma partição dos dados. Ver consulta aleatória
Nome Valores Description
hint.remote auto, left, local, right
hint.strategy=broadcast Especifica a maneira de compartilhar a carga de consulta em nós de cluster. Ver transmissão participar
hint.shufflekey=<key> A shufflekey consulta compartilha a carga de consulta em nós de cluster, usando uma chave para particionar dados. Ver consulta aleatória
hint.strategy=shuffle A shuffle consulta de estratégia compartilha a carga de consulta em nós de cluster, onde cada nó processa uma partição dos dados. Ver consulta aleatória

Observação

As dicas de join junção não alteram a semântica, mas podem afetar o desempenho.

Devoluções

O esquema de retorno e as linhas dependem do sabor da junção. O sabor de junção é especificado com a palavra-chave kind . A tabela a seguir mostra os sabores de junção suportados. Para ver exemplos de um sabor de junção específico, selecione o link na coluna Sabor de junção .

Junte-se ao sabor Devoluções Ilustração
innerunique (padrão) Junção interna com desduplicação do lado esquerdo
Esquema: Todas as colunas de ambas as tabelas, incluindo as teclas correspondentes
Linhas: Todas as linhas desduplicadas da tabela esquerda que correspondem às linhas da tabela direita
interior Junção interna padrão
Esquema: Todas as colunas de ambas as tabelas, incluindo as teclas correspondentes
Linhas: Apenas linhas correspondentes de ambas as tabelas
Exterior esquerdo Junção externa esquerda
Esquema: Todas as colunas de ambas as tabelas, incluindo as teclas correspondentes
Linhas: Todos os registos da tabela esquerda e apenas as linhas correspondentes da tabela direita
Exterior direito Junção externa direita
Esquema: Todas as colunas de ambas as tabelas, incluindo as teclas correspondentes
Linhas: Todos os registos da tabela direita e apenas as linhas correspondentes da tabela esquerda
Exterior completo Junção exterior completa
Esquema: Todas as colunas de ambas as tabelas, incluindo as teclas correspondentes
Linhas: Todos os registros de ambas as tabelas com células incomparáveis preenchidas com nulo
esquerdasemi Semi junta 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 Esquerda anti junção e semi variante
Esquema: Todas as colunas da tabela à esquerda
Linhas: Todos os registos da tabela da esquerda que não correspondem aos registos da tabela da direita
direitasemi Semi junção direita
Esquema: Todas as colunas da tabela direita
Linhas: Todos os registos da tabela da direita que correspondem aos registos da tabela da esquerda
rightanti, rightantisemi Direito anti junção e semi variante
Esquema: Todas as colunas da tabela direita
Linhas: Todos os registos da tabela direita que não correspondem aos registos da tabela esquerda

Junção cruzada

O KQL não fornece um sabor 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, alcançando efetivamente um comportamento semelhante a uma junção cruzada:

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