operador union

Pega em duas ou mais tabelas e devolve as linhas de todas elas.

Syntax

[ T| ] union [ UnionParameters ] [kind=|outerinner] [withsource=ColumnName] [isfuzzy=|truefalse] Tables

Saiba mais sobre as convenções de sintaxe.

Nota

A operação do union operador pode ser alterada ao definir a propriedade do best_effort pedido como true, utilizando uma instrução definida ou através das propriedades do pedido de cliente. Quando esta propriedade está definida como true, o union operador ignorará a resolução difusa e as falhas de conectividade para executar qualquer uma das subexpressões que estão a ser "unidas" e produzirá um aviso nos resultados do estado da consulta.

Parâmetros

Nome Tipo Necessário Descrição
T string A expressão tabular de entrada.
UnionParameters string Zero ou mais parâmetros separados 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. Veja os parâmetros de união suportados.
kind string inner ou outer. inner faz com que o resultado tenha o subconjunto de colunas que são comuns a todas as tabelas de entrada. outer faz com que o resultado tenha todas as colunas que ocorrem em qualquer uma das entradas. As células que não são definidas por uma linha de entrada estão definidas como null. A predefinição é outer.

Com outer, o resultado tem todas as colunas que ocorrem em qualquer uma das entradas, uma coluna para cada nome e ocorrências de tipo. Isto significa que, se uma coluna aparecer em múltiplas tabelas e tiver vários tipos, tem uma coluna correspondente para cada tipo no resultado da união. Este nome de coluna é sufixo com um "_" seguido do tipo de coluna de origem.
withsource=ColumnName string Se especificado, o resultado inclui uma coluna denominada ColumnName cujo valor indica qual a tabela de origem que contribuiu para cada linha. Se a consulta referenciar efetivamente tabelas de mais do que uma base de dados, incluindo a base de dados predefinida, o valor desta coluna tem um nome de tabela qualificado com a base de dados. as qualificações de cluster e base de dados estão presentes no valor se for referenciado mais do que um cluster.
isfuzzy bool Se definido como true, permite a resolução difusa de pernas união. O conjunto de origens sindicais é reduzido ao conjunto de referências de tabela que existem e estão acessíveis no momento ao analisar a consulta e preparar a execução. Se tiver sido encontrada, pelo menos, uma dessas tabelas, qualquer falha de resolução gera um aviso nos resultados do estado da consulta, mas não impedirá a execução da consulta. Se nenhuma resolução tiver sido efetuada com êxito, a consulta devolve um erro. A predefinição é false.

isfuzzy=true aplica-se apenas à fase de resolução de union origens. Assim que o conjunto de tabelas de origem for determinado, as possíveis falhas de consulta adicionais não serão suprimidas.
Tabelas string Uma ou mais referências de tabelas separadas por vírgulas, uma expressão de consulta entre parênteses ou um conjunto de tabelas especificadas com um caráter universal. Por exemplo, E* formaria a união de todas as tabelas na base de dados cujos nomes começam E.

Parâmetros sindicais suportados

Nome Tipo Necessário Descrição
hint.concurrency int Indica ao sistema quantas subconsultas simultâneas do union operador devem ser executadas em paralelo. A predefinição é o número de núcleos de CPU no nó único do cluster (2 a 16).
hint.spread int Indica ao sistema quantos nós devem ser utilizados pela execução simultânea union de subconsultas. A predefinição é 1.
Nome Tipo Necessário Descrição
T string A expressão tabular de entrada.
kind string inner ou outer. inner faz com que o resultado tenha o subconjunto de colunas que são comuns a todas as tabelas de entrada. outer faz com que o resultado tenha todas as colunas que ocorrem em qualquer uma das entradas. As células que não são definidas por uma linha de entrada estão definidas como null. A predefinição é outer.

Com outer, o resultado tem todas as colunas que ocorrem em qualquer uma das entradas, uma coluna para cada nome e ocorrências de tipo. Isto significa que, se uma coluna aparecer em múltiplas tabelas e tiver vários tipos, tem uma coluna correspondente para cada tipo no resultado da união. Este nome de coluna é sufixo com um "_" seguido do tipo de coluna de origem.
withsource=ColumnName string Se especificado, o resultado inclui uma coluna denominada ColumnName cujo valor indica qual a tabela de origem que contribuiu para cada linha. Se a consulta referenciar efetivamente tabelas de mais do que uma base de dados, incluindo a base de dados predefinida, o valor desta coluna tem um nome de tabela qualificado com a base de dados. as qualificações de cluster e base de dados estão presentes no valor se for referenciado mais do que um cluster.
isfuzzy bool Se definido como true, permite a resolução difusa de pernas união. O conjunto de origens sindicais é reduzido ao conjunto de referências de tabela que existem e estão acessíveis no momento ao analisar a consulta e preparar a execução. Se tiver sido encontrada, pelo menos, uma dessas tabelas, qualquer falha de resolução gera um aviso nos resultados do estado da consulta, mas não impedirá a execução da consulta. Se nenhuma resolução tiver sido efetuada com êxito, a consulta devolve um erro. No entanto, em consultas entre áreas de trabalho e entre aplicações, se alguma das áreas de trabalho ou aplicações não for encontrada, a consulta falhará. A predefinição é false.

isfuzzy=true aplica-se apenas à fase de resolução de union origens. Assim que o conjunto de tabelas de origem for determinado, as possíveis falhas de consulta adicionais não serão suprimidas.
Tabelas string Uma ou mais referências de tabelas separadas por vírgulas, uma expressão de consulta entre parênteses ou um conjunto de tabelas especificadas com um caráter universal. Por exemplo, E* formaria a união de todas as tabelas na base de dados cujos nomes começam E.

Sempre que for conhecida a lista de tabelas, não utilize carateres universais. Algumas áreas de trabalho contêm um número muito grande de tabelas que levaria a uma execução ineficiente. As tabelas também podem ser adicionadas ao longo do tempo, o que leva a resultados não preteridos.

Nota

  • O union âmbito pode incluir instruções let se atribuídas com a view palavra-chave.
  • O union âmbito não incluirá funções. Para incluir uma função, defina uma instrução let com a view palavra-chave.
  • Não há garantias da ordem pela qual as pernas união aparecerão, mas se cada perna tiver um order by operador, cada perna será ordenada.

Devoluções

Uma tabela com tantas linhas como em todas as tabelas de entrada.

Exemplos

Tabelas com cadeia no nome ou coluna

union K* | where * has "Kusto"

Linhas de todas as tabelas na base de dados cujo nome começa com Ke em que qualquer coluna inclui a palavra Kusto.

Contagem distinta

union withsource=SourceTable kind=outer Query, Command
| where Timestamp > ago(1d)
| summarize dcount(UserId)

O número de utilizadores distintos que produziram um Query evento ou um Command evento ao longo do último dia. No resultado, a coluna "SourceTable" indicará "Consulta" ou "Comando".

Query
| where Timestamp > ago(1d)
| union withsource=SourceTable kind=outer 
   (Command | where Timestamp > ago(1d))
| summarize dcount(UserId)

Esta versão mais eficiente produz o mesmo resultado. Filtra cada tabela antes de criar a união.

Ao utilizar isfuzzy=true

// Using union isfuzzy=true to access non-existing view:                                     
let View_1 = view () { print x=1 };
let View_2 = view () { print x=1 };
let OtherView_1 = view () { print x=1 };
union isfuzzy=true
(View_1 | where x > 0), 
(View_2 | where x > 0),
(View_3 | where x > 0)
| count 

Saída

de palavras
2

A observar o Estado da Consulta – o seguinte aviso devolvido: Failed to resolve entity 'View_3'

// Using union isfuzzy=true and wildcard access:
let View_1 = view () { print x=1 };
let View_2 = view () { print x=1 };
let OtherView_1 = view () { print x=1 };
union isfuzzy=true View*, SomeView*, OtherView*
| count 

Saída

de palavras
3

A observar o Estado da Consulta – o seguinte aviso devolvido: Failed to resolve entity 'SomeView*'

Erro de correspondência dos tipos de colunas de origem

let View_1 = view () { print x=1 };
let View_2 = view () { print x=toint(2) };
union withsource=TableName View_1, View_2

Saída

TableName x_long x_int
View_1 1
View_2 2
let View_1 = view () { print x=1 };
let View_2 = view () { print x=toint(2) };
let View_3 = view () { print x_long=3 };
union withsource=TableName View_1, View_2, View_3 

Saída

TableName x_long1 x_int x_long
View_1 1
View_2 2
View_3 3

A coluna x do View_1 recebeu o sufixo _longe, como uma coluna com o nome x_long já existe no esquema de resultados, os nomes das colunas foram des duplicados, o que produz uma nova coluna- x_long1