operator union
Dotyczy: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Przyjmuje co najmniej dwie tabele i zwraca wiersze wszystkich z nich.
Składnia
[ T |
] union
[ UnionParameters ] [kind=
outer
|inner
] [withsource=
ColumnName] [isfuzzy=
|true
false
] Tabele
[ T ] [kind=
inner
outer
|] union
[withsource=
Nazwakolumny] [ true
isfuzzy=
|false
] Tabele |
Dowiedz się więcej na temat konwencji składni.
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 true
, 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
Nazwisko | Type | Wymagania | opis |
---|---|---|---|
T | string |
Wyrażenie tabelaryczne danych wejściowych. | |
Parametry unii | string |
Zero lub więcej parametrów rozdzielonych spacjami w postaci wartości nazwy = , które kontrolują zachowanie operacji dopasowania wiersza i planu wykonania. Zobacz obsługiwane parametry unii. |
|
kind |
string |
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 ma 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 null . Wartość domyślna to outer .W przypadku outer elementu wynik zawiera wszystkie kolumny, które występują w dowolnych danych wejściowych, jedną kolumnę 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 "_", po którym następuje typ kolumny pochodzenia. |
|
withsource= Nazwakolumny |
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 znajdują się w wartości, jeśli odwołuje się do więcej niż jednego klastra. | |
isfuzzy |
bool |
Jeśli ustawiono 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ę, każda awaria rozwiązywania zwraca ostrzeżenie w wynikach stanu zapytania, ale nie zapobiegnie wykonywaniu 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 ustaleniu zestawu tabel źródłowych możliwe dodatkowe błędy zapytań nie zostaną pominięte. |
|
Tabele | string |
Co najmniej jedno odwołanie do tabeli rozdzielanej przecinkami, wyrażenie zapytania ujęte w nawiasy lub zestaw tabel określonych za pomocą symbolu wieloznacznych. Na przykład E* może utworzyć związek wszystkich tabel w bazie danych, których nazwy zaczynają się .E |
Obsługiwane parametry unii
Nazwisko | Type | Wymagania | opis |
---|---|---|---|
hint.concurrency |
int |
Wskazuje system, ile współbieżnych podzapytania union operatora ma być wykonywanych 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 podzapytania. Wartość domyślna to 1. |
Nazwisko | Type | Wymagania | opis |
---|---|---|---|
T | string |
Wyrażenie tabelaryczne danych wejściowych. | |
kind |
string |
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 ma 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 null . Wartość domyślna to outer .W przypadku outer elementu wynik zawiera wszystkie kolumny, które występują w dowolnych danych wejściowych, jedną kolumnę 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 "_", po którym następuje typ kolumny pochodzenia. |
|
withsource= Nazwakolumny |
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 znajdują się w wartości, jeśli odwołuje się do więcej niż jednego klastra. | |
isfuzzy |
bool |
Jeśli ustawiono 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ę, każda awaria rozwiązywania zwraca ostrzeżenie w wynikach stanu zapytania, ale nie zapobiegnie wykonywaniu 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 ustaleniu zestawu tabel źródłowych możliwe dodatkowe błędy zapytań nie zostaną pominięte. |
|
Tabele | string |
Co najmniej jedno odwołanie do tabeli rozdzielanej przecinkami, wyrażenie zapytania ujęte w nawiasy lub zestaw tabel określonych za pomocą symbolu wieloznacznych. Na przykład E* może utworzyć 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 niepredyktowanych wyników. |
Uwaga
- Zakres
union
może zawierać instrukcje let, jeśli są przypisywane za pomocą słowa kluczowegoview
. - Zakres
union
nie będzie zawierać funkcji. Aby dołączyć funkcję, zdefiniuj instrukcję let za pomocą słowa kluczowegoview
. - 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 zawierająca dowolną liczbę wierszy 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órej każda kolumna zawiera wyraz Kusto
.
Zliczenie
union withsource=SourceTable kind=outer Query, Command
| where Timestamp > ago(1d)
| summarize dcount(UserId)
Liczba unikatowych użytkowników, którzy wygenerowali Query
wydarzenie 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 wydajniejsza 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
Wyjście
Count |
---|
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
Wyjście
Count |
---|
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
Wyjście
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
Wyjście
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 zduplikowane, tworząc nową kolumnę- x_long1