Operátor union

Vezme dvě nebo více tabulek a vrátí řádky všech z nich.

Syntax

[ T| ] union [ UnionParameters ] [kind=|outerinner] [withsource=ColumnName] [isfuzzy=|truefalse] 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 truehodnotu 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 outerná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 outerná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 slovem view .
  • Obor union nebude obsahovat funkce. Chcete-li zahrnout funkci, definujte příkaz let pomocí klíčového view 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á Kna 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 _longa 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