operador union
Usa duas ou mais tabelas e retorna as linhas de todas elas.
Syntax
[ T|
] union
[ UnionParameters ] [kind=
|outer
inner
] [withsource=
ColumnName] [isfuzzy=
|true
false
] Tables
Saiba mais sobre as convenções de sintaxe.
Observação
A operação do union
operador pode ser alterada definindo a best_effort
propriedade de solicitação true
como , usando uma instrução set ou por meio de propriedades de solicitação do cliente. Quando essa propriedade é definida true
como , o union
operador desconsiderará a resolução difusa e as falhas de conectividade para executar qualquer uma das subexpressãos sendo "uniãodas" e produzirá um aviso na consulta status resultados.
Parâmetros
Nome | Tipo | Obrigatório | Descrição |
---|---|---|---|
T | string |
A expressão tabular de entrada. | |
UnionParameters | string |
Zero ou mais parâmetros separados por espaço no formato Nome= Valor que controlam o comportamento da operação de correspondência entre linhas e o plano de execução. Confira Parâmetros de união com suporte. |
|
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 são definidas null como . O padrã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. Isso significa que, se uma coluna aparecer em várias tabelas e tiver vários tipos, ela terá uma coluna correspondente para cada tipo no resultado da união. Esse nome de coluna é sufixo com um '_' seguido pelo tipo de coluna de origem. |
|
withsource= Columnname |
string |
Se especificada, a saída incluirá uma coluna chamada ColumnName cujo valor indica qual tabela de origem contribuiu com cada linha. Se a consulta fizer referência efetivamente a tabelas de mais de um banco de dados, incluindo o banco de dados padrão, o valor dessa coluna terá um nome de tabela qualificado com o banco de dados. As qualificações de cluster e banco de dados estarão presentes no valor se mais de um cluster for referenciado. | |
isfuzzy |
bool |
Se definido como , permite a true resolução difusa das pernas de união. O conjunto de fontes de união é reduzido ao conjunto de referências de tabela que existem e são acessíveis no momento durante a análise da consulta e a preparação para execução. Se pelo menos uma dessas tabelas tiver sido encontrada, qualquer falha de resolução gerará um aviso na consulta status resultados, mas não impedirá a execução da consulta. Se nenhuma resolução tiver sido bem-sucedida, a consulta retornará um erro. O padrão é false .isfuzzy=true aplica-se somente à fase de resolução de origens union . Depois que o conjunto de tabelas de origem for determinado, possíveis falhas de consulta adicionais não serão suprimidas. |
|
Tabelas | string |
Uma ou mais referências de tabela separadas por vírgulas, uma expressão de consulta entre parênteses ou um conjunto de tabelas especificado com um curinga. Por exemplo, E* formaria a união de todas as tabelas do banco de dados cujos nomes começam com E . |
Parâmetros de união com suporte
Nome | Tipo | Obrigatório | Descrição |
---|---|---|---|
hint.concurrency |
int |
Informa ao sistema quantas subconsultas simultâneas do operador union devem ser executadas em paralelo. O padrão é o número de núcleos de CPU no nó único do cluster (2 a 16). |
|
hint.spread |
int |
Informa ao sistema quantos nós devem ser usados pela execução simultânea de subconsultas union . O padrão é 1. |
Nome | Tipo | Obrigató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 são definidas null como . O padrã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. Isso significa que, se uma coluna aparecer em várias tabelas e tiver vários tipos, ela terá uma coluna correspondente para cada tipo no resultado da união. Esse nome de coluna é sufixo com um '_' seguido pelo tipo de coluna de origem. |
|
withsource= Columnname |
string |
Se especificada, a saída incluirá uma coluna chamada ColumnName cujo valor indica qual tabela de origem contribuiu com cada linha. Se a consulta fizer referência efetivamente a tabelas de mais de um banco de dados, incluindo o banco de dados padrão, o valor dessa coluna terá um nome de tabela qualificado com o banco de dados. As qualificações de cluster e banco de dados estarão presentes no valor se mais de um cluster for referenciado. | |
isfuzzy |
bool |
Se definido como , permite a true resolução difusa das pernas de união. O conjunto de fontes de união é reduzido ao conjunto de referências de tabela que existem e são acessíveis no momento durante a análise da consulta e a preparação para execução. Se pelo menos uma dessas tabelas tiver sido encontrada, qualquer falha de resolução gerará um aviso na consulta status resultados, mas não impedirá a execução da consulta. Se nenhuma resolução tiver sido bem-sucedida, a consulta retornará um erro. No entanto, em consultas entre workspaces e entre aplicativos, se qualquer um dos workspaces ou aplicativos não for encontrado, a consulta falhará. O padrão é false .isfuzzy=true aplica-se somente à fase de resolução de origens union . Depois que o conjunto de tabelas de origem for determinado, possíveis falhas de consulta adicionais não serão suprimidas. |
|
Tabelas | string |
Uma ou mais referências de tabela separadas por vírgulas, uma expressão de consulta entre parênteses ou um conjunto de tabelas especificado com um curinga. Por exemplo, E* formaria a união de todas as tabelas do banco de dados cujos nomes começam com E .Sempre que a lista de tabelas for conhecida, evite usar curingas. Alguns workspaces contêm um número muito grande de tabelas que levam a uma execução ineficiente. As tabelas também podem ser adicionadas ao longo do tempo, levando a resultados não previsíveis. |
Observação
- O
union
escopo pode incluir instruções let se atribuídas com oview
palavra-chave. - O
union
escopo não incluirá funções. Para incluir uma função, defina uma instrução let com oview
palavra-chave. - Não há garantia da ordem em que as pernas de união aparecerão, mas se cada perna tiver um
order by
operador, cada perna será classificada.
Retornos
Uma tabela com tantas linhas quanto as que existem em todas as tabelas de entrada.
Exemplos
Tabelas com cadeia de caracteres em nome ou coluna
union K* | where * has "Kusto"
Linhas de todas as tabelas no banco de dados cujo nome começa com K
e 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 usuários distintos que produziram um evento Query
ou um evento Command
no dia anterior. No resultado, a coluna “SourceTable” indicará "Query" ou "Command".
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. Ela filtra cada tabela antes de criar a união.
Usando 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
Contagem |
---|
2 |
Observando o status da consulta – o seguinte aviso retornado: 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
Contagem |
---|
3 |
Observando o status da consulta – o seguinte aviso retornado: Failed to resolve entity 'SomeView*'
Incompatibilidade de 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
de View_1
recebeu o sufixo _long
e, como uma coluna chamada x_long
já existe no esquema de resultado, os nomes das colunas foram diferenciados, gerando uma nova coluna chamada x_long1
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de