operator union
Przyjmuje co najmniej dwie tabele i zwraca wiersze wszystkich z nich.
Składnia
[ T|
] [ UnionParameters ] union
[kind=
inner
outer
|] [withsource=
ColumnName] [isfuzzy=
|true
false
] 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 true
wartość , 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 null wartość . Wartość domyślna to outer .W programie outer wynik 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 null wartość . Wartość domyślna to outer .W programie outer wynik 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 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 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
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla