union-operatorn
Tar två eller flera tabeller och returnerar raderna i dem alla.
Syntax
[ T|
] union
[ UnionParameters ] [] [withsource=
outer
|kind=
inner
ColumnName] [isfuzzy=
|true
false
] Tabeller
Läs mer om syntaxkonventioner.
Anteckning
Operatorns union
åtgärd kan ändras genom att ange best_effort
egenskapen request till true
, antingen med hjälp av en set-instruktion eller via egenskaper för klientbegäran. När den här egenskapen är inställd på true
ignorerar operatorn union
fuzzy-upplösning och anslutningsfel för att köra något av de underuttryck som "unioneras" och ger en varning i frågestatusresultatet.
Parametrar
Namn | Typ | Obligatorisk | Beskrivning |
---|---|---|---|
T | string |
Tabelluttrycket för indata. | |
UnionParameters | string |
Noll eller fler blankstegsavgränsade parametrar i form av Namnvärde= som styr beteendet för radmatchningsåtgärden och körningsplanen. Se unionsparametrar som stöds. |
|
kind |
string |
Antingen inner eller outer . inner gör att resultatet har den delmängd av kolumner som är gemensamma för alla indatatabeller. outer gör att resultatet har alla kolumner som förekommer i någon av indata. Celler som inte definieras av en indatarad anges till null . Standardvärdet är outer .Med outer har resultatet alla kolumner som förekommer i någon av indata, en kolumn för varje namn och typförekomster. Det innebär att om en kolumn visas i flera tabeller och har flera typer, har den en motsvarande kolumn för varje typ i unionsresultatet. Det här kolumnnamnet har suffixet "_" följt av ursprungskolumntypen. |
|
withsource= Columnname |
string |
Om det anges innehåller utdata en kolumn med namnet ColumnName vars värde anger vilken källtabell som har bidragit med varje rad. Om frågan effektivt refererar till tabeller från mer än en databas, inklusive standarddatabasen, har värdet för den här kolumnen ett tabellnamn som är kvalificerat med databasen. kluster- och databaskvalifikationer finns i värdet om fler än ett kluster refereras till. | |
isfuzzy |
bool |
Om det är inställt på true , tillåter fuzzy upplösning av union ben. Uppsättningen unionskällor reduceras till den uppsättning tabellreferenser som finns och är tillgängliga vid tidpunkten när frågan analyseras och förbereds för körning. Om minst en sådan tabell hittades ger eventuella lösningsfel en varning i frågestatusresultatet, men förhindrar inte frågekörningen. Om inga lösningar lyckades returnerar frågan ett fel. Standardvärdet är false .isfuzzy=true gäller endast för lösningsfasen för union källor. När uppsättningen med källtabeller har fastställts ignoreras inte eventuella ytterligare frågefel. |
|
Tabeller | string |
En eller flera kommaavgränsade tabellreferenser, ett frågeuttryck omgivet av parenteser eller en uppsättning tabeller som har angetts med jokertecken. Skulle till exempel E* utgöra en union av alla tabeller i databasen vars namn börjar E . |
Unionsparametrar som stöds
Namn | Typ | Obligatorisk | Beskrivning |
---|---|---|---|
hint.concurrency |
int |
Antyder systemet hur många samtidiga underfrågor av operatorn union som ska köras parallellt. Standardvärdet är antalet CPU-kärnor på den enskilda noden i klustret (2 till 16). |
|
hint.spread |
int |
Anger för systemet hur många noder som ska användas av körningen av samtidiga union underfrågor. Standard är 1. |
Namn | Typ | Obligatorisk | Beskrivning |
---|---|---|---|
T | string |
Tabelluttrycket för indata. | |
kind |
string |
Antingen inner eller outer . inner gör att resultatet har den delmängd av kolumner som är gemensamma för alla indatatabeller. outer gör att resultatet har alla kolumner som förekommer i någon av indata. Celler som inte definieras av en indatarad anges till null . Standardvärdet är outer .Med outer har resultatet alla kolumner som förekommer i någon av indata, en kolumn för varje namn och typförekomster. Det innebär att om en kolumn visas i flera tabeller och har flera typer, har den en motsvarande kolumn för varje typ i unionsresultatet. Det här kolumnnamnet har suffixet "_" följt av ursprungskolumntypen. |
|
withsource= Columnname |
string |
Om det anges innehåller utdata en kolumn med namnet ColumnName vars värde anger vilken källtabell som har bidragit med varje rad. Om frågan effektivt refererar till tabeller från mer än en databas, inklusive standarddatabasen, har värdet för den här kolumnen ett tabellnamn som är kvalificerat med databasen. kluster- och databaskvalifikationer finns i värdet om fler än ett kluster refereras till. | |
isfuzzy |
bool |
Om det är inställt på true , tillåter fuzzy upplösning av union ben. Uppsättningen unionskällor reduceras till den uppsättning tabellreferenser som finns och är tillgängliga vid tidpunkten när frågan analyseras och förbereds för körning. Om minst en sådan tabell hittades ger eventuella lösningsfel en varning i frågestatusresultatet, men förhindrar inte frågekörningen. Om inga lösningar lyckades returnerar frågan ett fel. Men i frågor mellan arbetsytor och mellan appar misslyckas frågan om någon av arbetsytorna eller apparna inte hittas. Standardvärdet är false .isfuzzy=true gäller endast för lösningsfasen för union källor. När uppsättningen med källtabeller har fastställts ignoreras inte eventuella ytterligare frågefel. |
|
Tabeller | string |
En eller flera kommaavgränsade tabellreferenser, ett frågeuttryck omgivet av parenteser eller en uppsättning tabeller som har angetts med jokertecken. Skulle till exempel E* utgöra en union av alla tabeller i databasen vars namn börjar E .När listan över tabeller är känd bör du avstå från att använda jokertecken. Vissa arbetsytor innehåller ett mycket stort antal tabeller som skulle leda till ineffektiv körning. Tabeller kan också läggas till över tid, vilket leder till oväntade resultat. |
Anteckning
- Omfånget
union
kan innehålla let-instruktioner om de tilldelas nyckelordetview
. - Omfånget
union
innehåller inte funktioner. Om du vill inkludera en funktion definierar du en let-instruktion med nyckelordetview
. - Det finns ingen garanti för i vilken ordning fackföreningsbenen kommer att visas, men om varje ben har en
order by
operatör kommer varje ben att sorteras.
Returer
En tabell med så många rader som det finns i alla indatatabeller.
Exempel
Tabeller med sträng i namn eller kolumn
union K* | where * has "Kusto"
Rader från alla tabeller i databasen vars namn börjar med K
och i vilken kolumn som helst innehåller ordet Kusto
.
Distinkt antal
union withsource=SourceTable kind=outer Query, Command
| where Timestamp > ago(1d)
| summarize dcount(UserId)
Antalet distinkta användare som har producerat antingen en Query
händelse eller en Command
händelse under den senaste dagen. I resultatet anger kolumnen 'SourceTable' antingen "Fråga" eller "Kommando".
Query
| where Timestamp > ago(1d)
| union withsource=SourceTable kind=outer
(Command | where Timestamp > ago(1d))
| summarize dcount(UserId)
Den här effektivare versionen ger samma resultat. Den filtrerar varje tabell innan den skapar unionen.
Använda 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
Resultat
Antal |
---|
2 |
Observera frågestatus – följande varning returnerades: 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
Resultat
Antal |
---|
3 |
Observera frågestatus – följande varning returnerades: Failed to resolve entity 'SomeView*'
Typer av källkolumner matchar inte
let View_1 = view () { print x=1 };
let View_2 = view () { print x=toint(2) };
union withsource=TableName View_1, View_2
Resultat
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
Resultat
TableName | x_long1 | x_int | x_long |
---|---|---|---|
View_1 | 1 | ||
View_2 | 2 | ||
View_3 | 3 |
Kolumnen x
från View_1
tog emot suffixet _long
och eftersom en kolumn med namnet x_long
redan finns i resultatschemat avduplicerades kolumnnamnen, vilket gav en ny kolumn- x_long1
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för