Operátor union
Vezme dvě nebo více tabulek a vrátí řádky všech z nich.
Syntax
[ T|
] union
[ UnionParameters ] [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
hodnotu pomocí příkazu set nebo prostřednictvím vlastností požadavku klienta. Pokud je tato vlastnost nastavená na true
, union
operátor ignoruje řešení přibližných shod a selhání připojení, aby se spustil některý z dílčích výrazů, které jsou "unioned", a zobrazí upozornění ve výsledcích stavu dotazu.
Parametry
Název | Typ | Vyžadováno | Popis |
---|---|---|---|
T | string |
Vstupní tabulkový výraz. | |
UnionParameters | string |
Žádný nebo více mezerami oddělených parametrů ve formě Hodnoty názvu= , které řídí chování operace párování řádků a plánu provádění. Projděte si podporované sjednocovací parametry. |
|
kind |
string |
inner nebo outer . inner způsobí, že výsledek bude obsahovat 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 libovolném vstupu. Buňky, které nejsou definované vstupním řádkem, jsou nastaveny na null . Výchozí formát je outer .V outer nástroji má výsledek všechny sloupce, které se vyskytují v libovolném vstupu, jeden sloupec pro každý výskyt názvu a typu. To znamená, že pokud se sloupec vyskytuje ve více tabulkách a má více typů, má ve výsledku sjednocení odpovídající sloupec pro každý typ. Tento název sloupce má příponu _, za kterou následuje typ původního sloupce. |
|
withsource= Columnname |
string |
Pokud je zadaný, výstup bude obsahovat sloupec s názvem ColumnName , jehož hodnota označuje zdrojovou tabulku, která přispěla jednotlivými řádky. Pokud dotaz efektivně odkazuje na tabulky z více než jedné databáze, včetně výchozí databáze, pak má hodnota tohoto sloupce název tabulky kvalifikovaný pro databázi. pokud se odkazuje na více než jeden cluster, jsou v hodnotě obsaženy kvalifikace clusteru a databáze. | |
isfuzzy |
bool |
Pokud je nastavena na true , umožňuje fuzzy rozlišení sjednocovací nohy. Sada sjednocovaných zdrojů je redukována na sadu odkazů na tabulky, které existují a jsou v danou chvíli přístupné při analýze dotazu a přípravě na spuštění. Pokud se najde alespoň jedna taková tabulka, jakékoli selhání řešení ve výsledcích stavu dotazu zobrazí upozornění, ale nezabrání spuštění dotazu. Pokud nebyla žádná řešení úspěšná, dotaz vrátí chybu. Výchozí formát je false .isfuzzy=true platí pouze pro union fázi řešení zdrojů. Po určení sady zdrojových tabulek nebudou potlačena možná další selhání dotazů. |
|
Tabulky | string |
Jeden nebo více odkazů na tabulky oddělené čárkami, výraz dotazu uzavřený se závorkou nebo sada tabulek zadaná zástupným znakem. E* Například by vytvořil sjednocení všech tabulek v databázi, jejichž názvy začínají E . |
Podporované sjednocovací parametry
Název | Typ | Vyžadováno | Popis |
---|---|---|---|
hint.concurrency |
int |
Napovídá systému, kolik souběžných poddotazů operátoru union by mělo být spuštěno 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ů má být použito souběžným union prováděním poddotazů. Výchozí hodnota je 1. |
Název | Typ | Vyžadováno | Popis |
---|---|---|---|
T | string |
Vstupní tabulkový výraz. | |
kind |
string |
inner nebo outer . inner způsobí, že výsledek bude obsahovat 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 libovolném vstupu. Buňky, které nejsou definované vstupním řádkem, jsou nastaveny na null . Výchozí formát je outer .V outer nástroji má výsledek všechny sloupce, které se vyskytují v libovolném vstupu, jeden sloupec pro každý výskyt názvu a typu. To znamená, že pokud se sloupec vyskytuje ve více tabulkách a má více typů, má ve výsledku sjednocení odpovídající sloupec pro každý typ. Tento název sloupce má příponu _, za kterou následuje typ původního sloupce. |
|
withsource= Columnname |
string |
Pokud je zadaný, výstup bude obsahovat sloupec s názvem ColumnName , jehož hodnota označuje zdrojovou tabulku, která přispěla jednotlivými řádky. Pokud dotaz efektivně odkazuje na tabulky z více než jedné databáze, včetně výchozí databáze, pak má hodnota tohoto sloupce název tabulky kvalifikovaný pro databázi. pokud se odkazuje na více než jeden cluster, jsou v hodnotě obsaženy kvalifikace clusteru a databáze. | |
isfuzzy |
bool |
Pokud je nastavena na true , umožňuje fuzzy rozlišení sjednocovací nohy. Sada sjednocovaných zdrojů je redukována na sadu odkazů na tabulky, které existují a jsou v danou chvíli přístupné při analýze dotazu a přípravě na spuštění. Pokud se najde alespoň jedna taková tabulka, jakékoli selhání řešení ve výsledcích stavu dotazu zobrazí upozornění, ale nezabrání spuště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ýchozí formát je false .isfuzzy=true platí pouze pro union fázi řešení zdrojů. Po určení sady zdrojových tabulek nebudou potlačena možná další selhání dotazů. |
|
Tabulky | string |
Jeden nebo více odkazů na tabulky oddělené čárkami, výraz dotazu uzavřený se závorkou nebo sada tabulek zadaná zástupným znakem. E* Například by vytvořil sjednocení všech tabulek v databázi, jejichž názvy začínají E .Vždy, když je seznam tabulek známý, nepoužívejte zástupné znaméně. Některé pracovní prostory obsahují velmi velký počet tabulek, které by vedly k neefektivnímu provádění. Tabulky se také můžou přidávat v průběhu času, což vede k nepředvídatelný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. Chcete-li zahrnout funkci, definujte příkaz let pomocí klíčovéhoview
slova . - Neexistuje žádná záruka pořadí, ve kterém se budou sjednocovací nohy zobrazovat, ale pokud má
order by
každá noha operátor, bude každá noha seřazena.
Návraty
Tabulka s tolika řádky, kolik je 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
na a ve kterých libovolný 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ří za poslední den vytvořili Query
událost nebo Command
událost. Ve výsledku sloupec SourceTable označí 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 vede ke stejnému výsledku. 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 |
Pozorující 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 |
Pozorující 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 | 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
Výstup
TableName | x_long1 | x_int | x_long |
---|---|---|---|
View_1 | 1 | ||
View_2 | 2 | ||
View_3 | 3 |
Sloupec x
z View_1
přijal příponu _long
a vzhledem k tomu, že sloupec s názvem x_long
již ve výsledném schématu existuje, byly názvy sloupců odstraněny a vznikl nový sloupec- x_long1
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro