operador union
Pega em duas ou mais tabelas e devolve 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.
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 aview
palavra-chave. - O
union
âmbito não incluirá funções. Para incluir uma função, defina uma instrução let com aview
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 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 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 _long
e, 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
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários