union-Operator
Gilt für: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Verwendet mindestens zwei Tabellen und gibt die Zeilen aller Tabellen zurück.
Syntax
[ T |
] union
[ UnionParameters ] [ ] [withsource=
inner
|outer
kind=
ColumnName] [isfuzzy=
|true
false
] Tables
[ T |
] union
[kind=
inner
|outer
] [withsource=
ColumnName] [isfuzzy=
|true
false
] Tables
Erfahren Sie mehr über Syntaxkonventionen.
Hinweis
Der Vorgang des union
Operators kann geändert werden, indem die best_effort
Anforderungseigenschaft true
mithilfe einer set-Anweisung oder über Clientanforderungseigenschaften festgelegt wird. Wenn diese Eigenschaft auf true
"unioned" festgelegt ist, ignoriert der union
Operator fuzzy-Auflösungs- und Verbindungsfehler, um einen der Unterausdrücke auszuführen, die "unioned" sind, und gibt eine Warnung in den Abfragestatusergebnissen zurück.
Parameter
Name | Type | Erforderlich | Beschreibung |
---|---|---|---|
T | string |
Der Tabellarische Eingabeausdruck. | |
UnionParameters | string |
Null oder mehr durch Leerzeichen getrennte Parameter in Form von Name = Wert, die das Verhalten des Vorgangs zum Zuordnen der Zeilen und den Ausführungsplan steuern. Siehe unterstützte Union-Parameter. |
|
kind |
string |
Entweder inner oder outer . inner bewirkt, dass das Ergebnis die Teilmenge der Spalten aufweist, die allen Eingabetabellen gemeinsam sind. outer bewirkt, dass das Ergebnis alle Spalten enthält, die in einer der Eingaben auftreten. Zellen, die nicht durch eine Eingabezeile definiert sind, werden auf null . Der Standardwert ist outer .Mit outer , das Ergebnis hat alle Spalten, die in einer der Eingaben auftreten, eine Spalte für jeden Namen und Typ vorkommen. Dies bedeutet, dass eine Spalte, wenn eine Spalte in mehreren Tabellen angezeigt wird und mehrere Typen aufweist, eine entsprechende Spalte für jeden Typ im Ergebnis der Union aufweist. Dieser Spaltenname ist mit dem Suffix '_' gefolgt vom Ursprungsspaltentyp versehen. |
|
withsource= ColumnName |
string |
Wenn angegeben, enthält die Ausgabe eine Spalte namens ColumnName , deren Wert angibt, welche Quelltabelle jede Zeile beigetragen hat. Wenn die Abfrage effektiv auf Tabellen aus mehreren Datenbanken verweist, einschließlich der Standarddatenbank, weist der Wert dieser Spalte einen Tabellennamen auf, der mit der Datenbank qualifiziert ist. Cluster- und Datenbankqualifikationen sind im Wert vorhanden, wenn auf mehrere Cluster verwiesen wird. | |
isfuzzy |
bool |
Bei Festlegung auf true , lässt Fuzzy-Auflösung von Vereinigungsbeinen zu. Der Satz von Union-Quellen wird auf den Satz von Tabellenverweise reduziert, die vorhanden sind und zur Zeit zugänglich sind, während die Abfrage analysiert und für die Ausführung vorbereitet wird. Wenn mindestens eine solche Tabelle gefunden wurde, gibt ein Lösungsfehler eine Warnung in den Abfragestatusergebnissen zurück, verhindert jedoch nicht die Abfrageausführung. Wenn keine Auflösungen erfolgreich waren, gibt die Abfrage einen Fehler zurück. Der Standardwert ist false .isfuzzy=true gilt nur für die Auflösungsphase der union -Quellen. Nachdem der Satz von Quelltabellen ermittelt wurde, werden mögliche zusätzliche Abfragefehler nicht unterdrückt. |
|
Tabellen | string |
Mindestens ein durch Trennzeichen getrenntes Tabellenverweise, ein Abfrageausdruck, der in Klammern eingeschlossen ist, oder eine Gruppe von Tabellen, die mit einem Wildcard angegeben sind. E* würde z. B. die Vereinigungsmenge aller Tabellen in der Datenbank bilden, deren Namen mit E beginnen. |
Unterstützte Union-Parameter
Name | Type | Erforderlich | Beschreibung |
---|---|---|---|
hint.concurrency |
int |
Weist das System darauf hin, wie viele gleichzeitige Unterabfragen des union -Operators parallel ausgeführt werden sollen. Der Standardwert ist die Anzahl der CPU-Kerne auf dem einzelnen Knoten des Clusters (2 bis 16). |
|
hint.spread |
int |
Weist das System darauf hin, wie viele Knoten von der gleichzeitigen Ausführung von union -Unterabfragen verwendet werden sollen. Der Standardwert ist 1. |
Hinweis
- Der
union
Bereich kann Let-Anweisungen enthalten, wenn es mit demview
Schlüsselwort verknüpft ist. - Der
union
Bereich enthält keine Funktionen. Um eine Funktion einzuschließen, definieren Sie eine Let-Anweisung mit demview
Schlüsselwort. - Es gibt keine Garantie für die Reihenfolge, in der die Vereinigungsbeine erscheinen, aber wenn jedes Bein über einen
order by
Operator verfügt, wird jedes Bein sortiert.
Gibt zurück
Eine Tabelle mit derselben Anzahl von Zeilen, wie in allen Eingabetabellen vorhanden sind.
Beispiele
Tabellen mit einer Zeichenfolge im Namen oder einer Spalte
union K* | where * has "Kusto"
Zeilen aus allen Tabellen in der Datenbank, deren Name mit K
beginnt und in denen eine beliebige Spalten das Wort Kusto
enthält.
Distinct Count
union withsource=SourceTable kind=outer Query, Command
| where Timestamp > ago(1d)
| summarize dcount(UserId)
Die Anzahl der unterschiedlichen Benutzer, die während des Vortags entweder ein Query
- oder ein Command
-Ereignis herbeigeführt haben. Im Ergebnis gibt die Spalte „SourceTable“ entweder „Abfrage“ oder „Befehl“ an.
Query
| where Timestamp > ago(1d)
| union withsource=SourceTable kind=outer
(Command | where Timestamp > ago(1d))
| summarize dcount(UserId)
Mit dieser effizienteren Version wird dasselbe Ergebnis erzielt. Jede Tabelle wird vor dem Erstellen der Union gefiltert.
Verwenden von 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
Output
Anzahl |
---|
2 |
Der Abfragestatus wird beobachtet: Die folgende Warnung wurde zurückgegeben: 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
Output
Anzahl |
---|
3 |
Der Abfragestatus wird beobachtet: Die folgende Warnung wurde zurückgegeben: Failed to resolve entity 'SomeView*'
Typen von Quellspalten stimmen nicht überein
let View_1 = view () { print x=1 };
let View_2 = view () { print x=toint(2) };
union withsource=TableName View_1, View_2
Output
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
Output
TableName | x_long1 | x_int | x_long |
---|---|---|---|
View_1 | 1 | ||
View_2 | 2 | ||
View_3 | 3 |
Die Spalte x
aus View_1
hat das Suffix _long
erhalten, und da eine Spalte mit dem Namen x_long
bereits im Ergebnisschema vorhanden ist, wurden die Spaltennamen dedupliziert, sodass eine neue Spalte erstellt wurde: x_long1
.