Operátor union
Platí pro: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Vezme dvě nebo více tabulek a vrátí řádky všech z nich.
Syntaxe
[ T |
] union
[ UnionParameters ] [kind=
outer
|inner
] [withsource=
ColumnName] [isfuzzy=
|true
false
] Tables
[ T |
] union
[kind=
outer
|inner
] [withsource=
ColumnName] [isfuzzy=
|true
false
] Tables
Přečtěte si další informace o konvencích syntaxe.
Poznámka:
Operaci operátoru union
lze změnit nastavením best_effort
vlastnosti požadavku na true
, pomocí příkazu set nebo prostřednictvím vlastností požadavku klienta. Pokud je tato vlastnost nastavena na true
, union
operátor ignoruje přibližné řešení a selhání připojení ke spuštění některého z dílčích výrazů, které jsou "sjednocovány" a zobrazí upozornění ve výsledcích stavu dotazu.
Parametry
Název | Type | Požadováno | Popis |
---|---|---|---|
T | string |
Vstupní tabulkový výraz. | |
UnionParameters | string |
Nula nebo více parametrů oddělených mezerami ve formě Hodnoty názvu = , které řídí chování operace shody řádků a plánu provádění. Viz podporované parametry sjednocení. |
|
kind |
string |
Buďto inner nebo outer . inner způsobí, že výsledek bude mít podmnožinu sloupců, které jsou společné pro všechny vstupní tabulky. outer způsobí, že výsledek bude obsahovat všechny sloupce, které se vyskytují v některém ze vstupů. Buňky, které nejsou definovány vstupním řádkem, jsou nastaveny na null . Výchozí hodnota je outer .Výsledek outer obsahuje všechny sloupce, které se vyskytují v některém ze vstupů, jeden sloupec pro každý název a typ výskytů. To znamená, že pokud se sloupec zobrazuje ve více tabulkách a má více typů, má odpovídající sloupec pro každý typ ve výsledku sjednocení. Tento název sloupce má příponu "_" následovanou typem sloupce původu. |
|
withsource= ColumnName |
string |
Pokud je zadáno, výstup obsahuje sloupec s názvem ColumnName , jehož hodnota označuje, která zdrojová tabulka přispěla každý řádek. Pokud dotaz efektivně odkazuje na tabulky z více než jedné databáze včetně výchozí databáze, pak hodnota tohoto sloupce má název tabulky kvalifikovaný pro databázi. kvalifikace clusteru a databáze jsou k dispozici v hodnotě, pokud se odkazuje na více než jeden cluster. | |
isfuzzy |
bool |
Pokud je nastavena na true , umožňuje přibližné rozlišení sjednocovací nohy. Sada sjednocovacích zdrojů se snižuje na sadu odkazů na tabulky, které existují, a jsou dostupné v době analýzy dotazu a přípravě na spuštění. Pokud byla nalezena aspoň jedna taková tabulka, jakékoli selhání řešení způsobí ve výsledcích stavu dotazu upozornění, ale nezabrání provádění dotazu. Pokud nebyla žádná řešení úspěšná, dotaz vrátí chybu. Výchozí hodnota je false .isfuzzy=true platí pouze pro union fázi řešení zdrojů. Jakmile se určí sada zdrojových tabulek, nepotlačí se možná další selhání dotazů. |
|
Tabulky | string |
Jeden nebo více odkazů na tabulku oddělenou čárkami, výraz dotazu uzavřený se závorkou nebo sada tabulek zadaných zástupným znakem. Například E* by vytvořil sjednocení všech tabulek v databázi, jejichž názvy začínají E . |
Podporované parametry sjednocení
Name | Type | Požadováno | Popis |
---|---|---|---|
hint.concurrency |
int |
Napovídá systému, kolik souběžných poddotazů operátoru union se má spustit paralelně. Výchozí hodnota je počet jader procesoru na jednom uzlu clusteru (2 až 16). |
|
hint.spread |
int |
Napovídá systému, kolik uzlů by mělo být použito souběžným union spuštěním poddotazů. Výchozí hodnota je 1. |
Name | Type | Požadováno | Popis |
---|---|---|---|
T | string |
Vstupní tabulkový výraz. | |
kind |
string |
Buďto inner nebo outer . inner způsobí, že výsledek bude mít podmnožinu sloupců, které jsou společné pro všechny vstupní tabulky. outer způsobí, že výsledek bude obsahovat všechny sloupce, které se vyskytují v některém ze vstupů. Buňky, které nejsou definovány vstupním řádkem, jsou nastaveny na null . Výchozí hodnota je outer .Výsledek outer obsahuje všechny sloupce, které se vyskytují v některém ze vstupů, jeden sloupec pro každý název a typ výskytů. To znamená, že pokud se sloupec zobrazuje ve více tabulkách a má více typů, má odpovídající sloupec pro každý typ ve výsledku sjednocení. Tento název sloupce má příponu "_" následovanou typem sloupce původu. |
|
withsource= ColumnName |
string |
Pokud je zadáno, výstup obsahuje sloupec s názvem ColumnName , jehož hodnota označuje, která zdrojová tabulka přispěla každý řádek. Pokud dotaz efektivně odkazuje na tabulky z více než jedné databáze včetně výchozí databáze, pak hodnota tohoto sloupce má název tabulky kvalifikovaný pro databázi. kvalifikace clusteru a databáze jsou k dispozici v hodnotě, pokud se odkazuje na více než jeden cluster. | |
isfuzzy |
bool |
Pokud je nastavena na true , umožňuje přibližné rozlišení sjednocovací nohy. Sada sjednocovacích zdrojů se snižuje na sadu odkazů na tabulky, které existují, a jsou dostupné v době analýzy dotazu a přípravě na spuštění. Pokud byla nalezena aspoň jedna taková tabulka, jakékoli selhání řešení způsobí ve výsledcích stavu dotazu upozornění, ale nezabrání provádění dotazu. Pokud nebyla žádná řešení úspěšná, dotaz vrátí chybu. Pokud se ale některý z pracovních prostorů nebo aplikací nenajde, dotaz selže v dotazech mezi pracovními prostory a aplikacemi. Výchozí hodnota je false .isfuzzy=true platí pouze pro union fázi řešení zdrojů. Jakmile se určí sada zdrojových tabulek, nepotlačí se možná další selhání dotazů. |
|
Tabulky | string |
Jeden nebo více odkazů na tabulku oddělenou čárkami, výraz dotazu uzavřený se závorkou nebo sada tabulek zadaných zástupným znakem. Například E* by vytvořil sjednocení všech tabulek v databázi, jejichž názvy začínají E .Kdykoli je seznam tabulek známý, nepoužívejte zástupné znamény. Některé pracovní prostory obsahují velmi velký počet tabulek, které by vedlo k neefektivnímu spuštění. Tabulky mohou být také přidány v průběhu času, což vede k neprediktovaným výsledkům. |
Poznámka:
- Obor
union
může obsahovat příkazy let, pokud jsou přiřazeny klíčovým slovemview
. - Obor
union
nebude obsahovat funkce. Pokud chcete zahrnout funkci, definujte příkaz let s klíčovým slovemview
. - Neexistuje žádná záruka pořadí, ve kterém se budou sjednocovat nohy, ale pokud má každá noha
order by
operátor, bude každá noha seřazena.
Návraty
Tabulka s tolika řádky, kolik jsou ve všech vstupních tabulkách.
Příklady
Tabulky s řetězcem v názvu nebo sloupci
union K* | where * has "Kusto"
Řádky ze všech tabulek v databázi, jejichž název začíná K
, a ve kterých každý sloupec obsahuje slovo Kusto
.
Počet jedinečných položek
union withsource=SourceTable kind=outer Query, Command
| where Timestamp > ago(1d)
| summarize dcount(UserId)
Počet jedinečných uživatelů, kteří vytvořili Query
událost nebo Command
událost za poslední den. Ve výsledku sloupec SourceTable označí buď Dotaz, nebo Příkaz.
Query
| where Timestamp > ago(1d)
| union withsource=SourceTable kind=outer
(Command | where Timestamp > ago(1d))
| summarize dcount(UserId)
Tato efektivnější verze vytvoří stejný výsledek. Před vytvořením sjednocení vyfiltruje každou tabulku.
Používání akce 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
Výstup
Počet |
---|
2 |
Pozoruje se stav dotazu – vrátilo se následující upozornění: 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
Výstup
Počet |
---|
3 |
Pozoruje se stav dotazu – vrátilo se následující upozornění: Failed to resolve entity 'SomeView*'
Neshoda typů zdrojových sloupců
let View_1 = view () { print x=1 };
let View_2 = view () { print x=toint(2) };
union withsource=TableName View_1, View_2
Výstup
TableName | x_long | x_int |
---|---|---|
View_1 | 0 | |
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
Výstup
TableName | x_long1 | x_int | x_long |
---|---|---|---|
View_1 | 0 | ||
View_2 | 2 | ||
View_3 | 3 |
Sloupec x
z View_1
přijaté přípony _long
a jako sloupec s názvem x_long
již ve výsledném schématu existuje, názvy sloupců byly odstraněny a vytvoří nový sloupec- x_long1