operator union

Przyjmuje co najmniej dwie tabele i zwraca wiersze wszystkich z nich.

Składnia

[ T| ] [ UnionParameters ] union [kind=innerouter|] [withsource=ColumnName] [isfuzzy=|truefalse] Tabele

Dowiedz się więcej o konwencjach składniowych.

Uwaga

Operację union operatora można zmienić, ustawiając best_effort właściwość żądania na true, przy użyciu instrukcji set lub właściwości żądania klienta. Gdy ta właściwość jest ustawiona na truewartość , union operator zlekceważy rozpoznawanie rozmyte i błędy łączności, aby wykonać dowolne z wyrażeń podrzędnych będących "unioned" i zwróci ostrzeżenie w wynikach stanu zapytania.

Parametry

Nazwa Typ Wymagane Opis
T string Wyrażenie tabelaryczne danych wejściowych.
UnionParameters string Zero lub więcej parametrów rozdzielanych spacjami w postaci wartości nazwy=, które kontrolują zachowanie operacji dopasowania wiersza i planu wykonywania. Zobacz obsługiwane parametry unii.
kind string Wartość inner lub outer. inner powoduje, że wynik ma podzbiór kolumn, które są wspólne dla wszystkich tabel wejściowych. outer powoduje, że wynik będzie miał wszystkie kolumny, które występują w dowolnych danych wejściowych. Komórki, które nie są zdefiniowane przez wiersz wejściowy, są ustawione na nullwartość . Wartość domyślna to outer.

W programie outerwynik zawiera wszystkie kolumny, które występują w dowolnym z danych wejściowych, jedna kolumna dla każdej nazwy i wystąpień typu. Oznacza to, że jeśli kolumna pojawia się w wielu tabelach i ma wiele typów, ma odpowiednią kolumnę dla każdego typu w wyniku unii. Ta nazwa kolumny ma sufiks "_", a następnie typ kolumny pochodzenia.
withsource=Columnname string Jeśli zostanie określony, dane wyjściowe zawierają kolumnę o nazwie ColumnName , której wartość wskazuje, która tabela źródłowa przyczyniła się do każdego wiersza. Jeśli zapytanie skutecznie odwołuje się do tabel z więcej niż jednej bazy danych, w tym domyślnej bazy danych, wartość tej kolumny ma nazwę tabeli kwalifikowaną z bazą danych. kwalifikacje klastra i bazy danych są obecne w wartości, jeśli odwołano się do więcej niż jednego klastra.
isfuzzy bool Jeśli jest ustawiona wartość true, umożliwia rozmyte rozpoznawanie nóg unii. Zestaw źródeł unii jest zredukowany do zestawu odwołań do tabeli, które istnieją i są dostępne w tym czasie podczas analizowania zapytania i przygotowywania do wykonania. Jeśli znaleziono co najmniej jedną taką tabelę, wszelkie błędy rozwiązywania dają ostrzeżenie w wynikach stanu zapytania, ale nie uniemożliwi wykonania zapytania. Jeśli żadne rozwiązania nie powiodły się, zapytanie zwraca błąd. Wartość domyślna to false.

isfuzzy=true dotyczy tylko fazy rozwiązywania union problemów ze źródłami. Po określeniu zestawu tabel źródłowych możliwe dodatkowe błędy zapytań nie zostaną pominięte.
Tabele string Jedno lub więcej odwołań do tabeli rozdzielanej przecinkami, wyrażenie zapytania ujęte w nawiasy lub zestaw tabel określonych z symbolami wieloznacznymi. Na przykład będzie E* stanowić związek wszystkich tabel w bazie danych, których nazwy zaczynają się E.

Obsługiwane parametry unii

Nazwa Typ Wymagane Opis
hint.concurrency int Wskazuje system, ile współbieżnych podquerii union operatora należy wykonać równolegle. Wartość domyślna to liczba rdzeni procesora CPU w jednym węźle klastra (od 2 do 16).
hint.spread int Wskazuje system, ile węzłów powinno być używanych przez współbieżne union wykonywanie podquery. Wartość domyślna to 1.
Nazwa Typ Wymagane Opis
T string Wyrażenie tabelaryczne danych wejściowych.
kind string Wartość inner lub outer. inner powoduje, że wynik ma podzbiór kolumn, które są wspólne dla wszystkich tabel wejściowych. outer powoduje, że wynik będzie miał wszystkie kolumny, które występują w dowolnych danych wejściowych. Komórki, które nie są zdefiniowane przez wiersz wejściowy, są ustawione na nullwartość . Wartość domyślna to outer.

W programie outerwynik zawiera wszystkie kolumny, które występują w dowolnym z danych wejściowych, jedna kolumna dla każdej nazwy i wystąpień typu. Oznacza to, że jeśli kolumna pojawia się w wielu tabelach i ma wiele typów, ma odpowiednią kolumnę dla każdego typu w wyniku unii. Ta nazwa kolumny ma sufiks "_", a następnie typ kolumny pochodzenia.
withsource=Columnname string Jeśli zostanie określony, dane wyjściowe zawierają kolumnę o nazwie ColumnName , której wartość wskazuje, która tabela źródłowa przyczyniła się do każdego wiersza. Jeśli zapytanie skutecznie odwołuje się do tabel z więcej niż jednej bazy danych, w tym domyślnej bazy danych, wartość tej kolumny ma nazwę tabeli kwalifikowaną z bazą danych. kwalifikacje klastra i bazy danych są obecne w wartości, jeśli odwołano się do więcej niż jednego klastra.
isfuzzy bool Jeśli jest ustawiona wartość true, umożliwia rozmyte rozpoznawanie nóg unii. Zestaw źródeł unii jest zredukowany do zestawu odwołań do tabeli, które istnieją i są dostępne w tym czasie podczas analizowania zapytania i przygotowywania do wykonania. Jeśli znaleziono co najmniej jedną taką tabelę, wszelkie błędy rozwiązywania dają ostrzeżenie w wynikach stanu zapytania, ale nie uniemożliwi wykonania zapytania. Jeśli żadne rozwiązania nie powiodły się, zapytanie zwraca błąd. Jednak w zapytaniach między obszarami roboczymi i między aplikacjami, jeśli którykolwiek z obszarów roboczych lub aplikacji nie zostanie znaleziony, zapytanie zakończy się niepowodzeniem. Wartość domyślna to false.

isfuzzy=true dotyczy tylko fazy rozwiązywania union problemów ze źródłami. Po określeniu zestawu tabel źródłowych możliwe dodatkowe błędy zapytań nie zostaną pominięte.
Tabele string Jedno lub więcej odwołań do tabeli rozdzielanej przecinkami, wyrażenie zapytania ujęte w nawiasy lub zestaw tabel określonych z symbolami wieloznacznymi. Na przykład będzie E* stanowić związek wszystkich tabel w bazie danych, których nazwy zaczynają się E.

Za każdym razem, gdy lista tabel jest znana, powstrzymaj się od używania symboli wieloznacznych. Niektóre obszary robocze zawierają bardzo dużą liczbę tabel, które mogłyby prowadzić do nieefektywnego wykonywania. Tabele mogą być również dodawane w czasie, co prowadzi do nieprzewidzianych wyników.

Uwaga

  • Zakres union może zawierać instrukcje let , jeśli zostały przypisane do słowa kluczowego view .
  • Zakres union nie będzie zawierać funkcji. Aby dołączyć funkcję, zdefiniuj instrukcję let za pomocą słowa kluczowego view .
  • Nie ma gwarancji kolejności, w której pojawią się nogi unii, ale jeśli każda noga ma order by operatora, to każda noga zostanie posortowana.

Zwraca

Tabela z dowolną liczbą wierszy, które znajdują się we wszystkich tabelach wejściowych.

Przykłady

Tabele z ciągiem w nazwie lub kolumnie

union K* | where * has "Kusto"

Wiersze ze wszystkich tabel w bazie danych, których nazwa zaczyna się od K, i w których każda kolumna zawiera wyraz Kusto.

Zliczenie

union withsource=SourceTable kind=outer Query, Command
| where Timestamp > ago(1d)
| summarize dcount(UserId)

Liczba odrębnych użytkowników, którzy wygenerowali Query zdarzenie lub Command wydarzenie w ciągu ostatniego dnia. W wyniku kolumna "SourceTable" będzie wskazywać "Zapytanie" lub "Polecenie".

Query
| where Timestamp > ago(1d)
| union withsource=SourceTable kind=outer 
   (Command | where Timestamp > ago(1d))
| summarize dcount(UserId)

Ta bardziej wydajna wersja generuje ten sam wynik. Filtruje każdą tabelę przed utworzeniem unii.

Korzystanie z akcji 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 

Dane wyjściowe

Liczba
2

Obserwowanie stanu zapytania — zwrócone jest następujące ostrzeżenie: 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 

Dane wyjściowe

Liczba
3

Obserwowanie stanu zapytania — zwrócone jest następujące ostrzeżenie: Failed to resolve entity 'SomeView*'

Niezgodność typów kolumn źródłowych

let View_1 = view () { print x=1 };
let View_2 = view () { print x=toint(2) };
union withsource=TableName View_1, View_2

Dane wyjściowe

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 

Dane wyjściowe

TableName x_long1 x_int x_long
View_1 1
View_2 2
View_3 3

Kolumna x z View_1 odebranego sufiksu _long, a jako kolumna o nazwie x_long już istnieje w schemacie wyników, nazwy kolumn zostały zdeduplikowane, tworząc nową kolumnę- x_long1