Operatore union
Si applica a: ✅Microsoft Fabric✅Azure Esplora dati✅ Azure Monitor✅Microsoft Sentinel
Considera due o più tabelle e restituisce le righe di tutte.
Sintassi
[ T |
] union
[ UnionParameters ] [kind=
outer
|inner
] [withsource=
ColumnName] [isfuzzy=
|true
false
] Tables
[ T |
] [kind=
inner
outer
|] union
[withsource=
ColumnName] [isfuzzy=
|true
false
] Tables
Altre informazioni sulle convenzioni di sintassi.
Nota
L'operazione dell'operatore union
può essere modificata impostando la proprietà della best_effort
richiesta su true
, usando un'istruzione set o tramite le proprietà della richiesta client. Quando questa proprietà è impostata su true
, l'operatore union
ignorerà la risoluzione fuzzy e gli errori di connettività per eseguire una delle sottoespressione da "unione" e restituirà un avviso nei risultati dello stato della query.
Parametri
Nome | Digita | Obbligatorio | Descrizione |
---|---|---|---|
T | string |
Espressione tabulare di input. | |
UnionParameters | string |
zero o più parametri separati da spazi sotto forma di Name = Value che controllano il comportamento dell'operazione di corrispondenza righe e il piano di esecuzione. Vedere i parametri di unione supportati. |
|
kind |
string |
inner o outer . inner fa sì che il risultato abbia il subset di colonne comuni a tutte le tabelle di input. outer fa sì che il risultato abbia tutte le colonne che si verificano in uno degli input. Le celle non definite da una riga di input vengono impostate su null . Il valore predefinito è outer .Con outer , il risultato include tutte le colonne che si verificano in uno degli input, una colonna per ogni nome e occorrenze del tipo. Ciò significa che se una colonna viene visualizzata in più tabelle e ha più tipi, ha una colonna corrispondente per ogni tipo nel risultato dell'unione. Questo nome di colonna è suffisso con un '_' seguito dal tipo di colonna di origine. |
|
withsource= ColumnName |
string |
Se specificato, l'output include una colonna denominata ColumnName il cui valore indica quale tabella di origine ha contribuito ogni riga. Se la query fa effettivamente riferimento a tabelle di più database, incluso il database predefinito, il valore di questa colonna ha un nome di tabella qualificato con il database. le qualifiche del cluster e del database sono presenti nel valore se viene fatto riferimento a più cluster. | |
isfuzzy |
bool |
Se impostato su true , consente la risoluzione fuzzy delle gambe di unione. Il set di origini di unione viene ridotto al set di riferimenti di tabella esistenti e accessibili al momento durante l'analisi della query e la preparazione per l'esecuzione. Se è stata trovata almeno una tabella di questo tipo, qualsiasi errore di risoluzione genera un avviso nei risultati dello stato della query, ma non impedisce l'esecuzione della query. Se non sono state eseguite risoluzioni, la query restituisce un errore. Il valore predefinito è false .isfuzzy=true si applica solo alla fase di risoluzione delle origini union . Dopo aver determinato il set di tabelle di origine, eventuali errori di query aggiuntivi non verranno eliminati. |
|
Tabelle | string |
Uno o più riferimenti di tabella delimitati da virgole, un'espressione di query racchiusa tra parentesi o un set di tabelle specificate con un carattere jolly. Ad esempio, E* forma l'unione di tutte le tabelle del database i cui nomi iniziano con E . |
Parametri di unione supportati
Nome | Digita | Obbligatorio | Descrizione |
---|---|---|---|
hint.concurrency |
int |
Suggerisce al sistema il numero di sottoquery simultanee dell'operatore union che devono essere eseguite in parallelo. Il valore predefinito è il numero di core CPU nel singolo nodo del cluster (da 2 a 16). |
|
hint.spread |
int |
Suggerisce al sistema il numero di nodi che devono essere usati dall'esecuzione di sottoquery union simultanee. Il valore predefinito è 1. |
Nome | Digita | Obbligatorio | Descrizione |
---|---|---|---|
T | string |
Espressione tabulare di input. | |
kind |
string |
inner o outer . inner fa sì che il risultato abbia il subset di colonne comuni a tutte le tabelle di input. outer fa sì che il risultato abbia tutte le colonne che si verificano in uno degli input. Le celle non definite da una riga di input vengono impostate su null . Il valore predefinito è outer .Con outer , il risultato include tutte le colonne che si verificano in uno degli input, una colonna per ogni nome e occorrenze del tipo. Ciò significa che se una colonna viene visualizzata in più tabelle e ha più tipi, ha una colonna corrispondente per ogni tipo nel risultato dell'unione. Questo nome di colonna è suffisso con un '_' seguito dal tipo di colonna di origine. |
|
withsource= ColumnName |
string |
Se specificato, l'output include una colonna denominata ColumnName il cui valore indica quale tabella di origine ha contribuito ogni riga. Se la query fa effettivamente riferimento a tabelle di più database, incluso il database predefinito, il valore di questa colonna ha un nome di tabella qualificato con il database. le qualifiche del cluster e del database sono presenti nel valore se viene fatto riferimento a più cluster. | |
isfuzzy |
bool |
Se impostato su true , consente la risoluzione fuzzy delle gambe di unione. Il set di origini di unione viene ridotto al set di riferimenti di tabella esistenti e accessibili al momento durante l'analisi della query e la preparazione per l'esecuzione. Se è stata trovata almeno una tabella di questo tipo, qualsiasi errore di risoluzione genera un avviso nei risultati dello stato della query, ma non impedisce l'esecuzione della query. Se non sono state eseguite risoluzioni, la query restituisce un errore. Tuttavia, nelle query tra aree di lavoro e tra app, se non vengono trovate aree di lavoro o app, la query avrà esito negativo. Il valore predefinito è false .isfuzzy=true si applica solo alla fase di risoluzione delle origini union . Dopo aver determinato il set di tabelle di origine, eventuali errori di query aggiuntivi non verranno eliminati. |
|
Tabelle | string |
Uno o più riferimenti di tabella delimitati da virgole, un'espressione di query racchiusa tra parentesi o un set di tabelle specificate con un carattere jolly. Ad esempio, E* forma l'unione di tutte le tabelle del database i cui nomi iniziano con E .Ogni volta che l'elenco di tabelle è noto, evitare di usare caratteri jolly. Alcune aree di lavoro contengono un numero molto elevato di tabelle, il che comporterebbe un'esecuzione inefficiente. Nel corso del tempo è inoltre possibile che vengano aggiunte tabelle, generando risultati imprevisti. |
Nota
- L'ambito
union
può includere istruzioni let se attribuiti con laview
parola chiave . - L'ambito
union
non includerà funzioni. Per includere una funzione, definire un'istruzione let con laview
parola chiave . - Non c'è garanzia dell'ordine in cui appariranno le gambe unione, ma se ogni gamba ha un
order by
operatore, ogni gamba verrà ordinata.
Valori restituiti
Una tabella con un numero di righe corrispondente a quello delle righe di tutte le tabelle di input.
Esempi
tabelle con una stringa nel nome o nella colonna
union K* | where * has "Kusto"
Restituisce le righe di tutte le tabelle del database il cui nome inizia con K
e in cui qualsiasi colonna include la parola Kusto
.
valori distinti
union withsource=SourceTable kind=outer Query, Command
| where Timestamp > ago(1d)
| summarize dcount(UserId)
Numero di utenti distinti che hanno generato un evento Query
o un evento Command
nel giorno precedente. Nel risultato la colonna "SourceTable" indicherà "Query" o "Command".
Query
| where Timestamp > ago(1d)
| union withsource=SourceTable kind=outer
(Command | where Timestamp > ago(1d))
| summarize dcount(UserId)
Questa versione più efficiente genera lo stesso risultato. Filtra ogni tabella prima di creare l'unione.
uso di 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
Output
Count |
---|
2 |
Osservando lo stato della query, viene restituito l'avviso seguente: 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
Output
Count |
---|
3 |
Osservando lo stato della query, viene restituito l'avviso seguente: Failed to resolve entity 'SomeView*'
Mancata corrispondenza dei tipi di colonne di origine
let View_1 = view () { print x=1 };
let View_2 = view () { print x=toint(2) };
union withsource=TableName View_1, View_2
Output
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
Output
TableName | x_long1 | x_int | x_long |
---|---|---|---|
View_1 | 1 | ||
View_2 | 2 | ||
View_3 | 3 |
La colonna x
di View_1
ha ricevuto il suffisso _long
e poiché nello schema del risultato esiste già una colonna denominata x_long
, i nomi delle colonne sono stati deduplicati, generando una nuova colonna x_long1