union-Operator
Verwendet mindestens zwei Tabellen und gibt die Zeilen aller Tabellen zurück.
Syntax
[ T|
] union
[ UnionParameters ] [kind=
inner
|outer
] [] [withsource=
Spaltenname] [true
|isfuzzy=
false
] Tabellen
Erfahren Sie mehr über Syntaxkonventionen.
Hinweis
Der Vorgang des union
Operators kann geändert werden, indem die Anforderungseigenschaft best_effort
auf true
festgelegt wird, entweder mithilfe einer set-Anweisung oder über Clientanforderungseigenschaften. Wenn diese Eigenschaft auf true
festgelegt ist, ignoriert der union
Operator Fuzzyauflösungs- und Konnektivitätsfehler, um einen der "unioned"-Unterausdrücke auszuführen, und gibt eine Warnung in der Abfrage status Ergebnissen aus.
Parameter
Name | Typ | 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. Weitere Informationen finden Sie unter 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 werden, werden auf null festgelegt. Der Standardwert lautet outer .Mit outer enthält das Ergebnis alle Spalten, die in einer der Eingaben auftreten, eine Spalte für jeden Namen und jeden Typ. Dies bedeutet, dass eine Spalte, wenn sie in mehreren Tabellen angezeigt wird und mehrere Typen aufweist, eine entsprechende Spalte für jeden Typ im Ergebnis der Union enthält. Dieser Spaltenname ist mit einem "_" gefolgt vom Ursprungsspaltentyp versehen. |
|
withsource= Columnname |
string |
Wenn angegeben, enthält die Ausgabe eine Spalte namens ColumnName , deren Wert angibt, welche Quelltabelle die einzelnen Zeilen beigetragen hat. Wenn die Abfrage effektiv auf Tabellen aus mehr als einer Datenbank verweist, einschließlich der Standarddatenbank, hat der Wert dieser Spalte einen Tabellennamen, der mit der Datenbank qualifiziert ist. Cluster- und Datenbankqualifikationen sind im Wert vorhanden, wenn auf mehrere Cluster verwiesen wird. | |
isfuzzy |
bool |
Wenn auf true festgelegt ist, lässt die Fuzzy-Auflösung von Unionschenkeln zu. Der Satz der Unionquellen wird auf den Satz von Tabellenverweise reduziert, die vorhanden sind und auf die während der Analyse der Abfrage und vorbereitung der Ausführung zugegriffen werden kann. Wenn mindestens eine solche Tabelle gefunden wurde, gibt jeder Lösungsfehler eine Warnung in der Abfrage status Ergebnissen, verhindert jedoch nicht die Abfrageausführung. Wenn keine Lösung erfolgreich war, gibt die Abfrage einen Fehler zurück. Der Standardwert lautet false .isfuzzy=true gilt nur für die Auflösungsphase der union -Quellen. Sobald der Satz der Quelltabellen ermittelt wurde, werden mögliche zusätzliche Abfragefehler nicht unterdrückt. |
|
Tabellen | string |
Mindestens ein durch Trennzeichen getrennte Tabellenverweise, ein Abfrageausdruck mit Klammern oder eine Gruppe von Tabellen, die mit einem Feldhalter angegeben sind. E* würde z. B. die Vereinigungsmenge aller Tabellen in der Datenbank bilden, deren Namen mit E beginnen. |
Unterstützte Unionparameter
Name | Typ | 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 er demview
Schlüsselwort (keyword) zugeordnet wird. - Der
union
Bereich enthält keine Funktionen. Um eine Funktion einzuschließen, definieren Sie eine let-Anweisung mit demview
Schlüsselwort (keyword). - Es gibt keine Garantie für die Reihenfolge, in der die Unionbeine angezeigt werden, 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 Zeichenfolge im Namen oder in der 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
Ausgabe
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
Ausgabe
Anzahl |
---|
3 |
Der Abfragestatus wird beobachtet: Die folgende Warnung wurde zurückgegeben: Failed to resolve entity 'SomeView*'
Nicht übereinstimmende Quellspaltentypen
let View_1 = view () { print x=1 };
let View_2 = view () { print x=toint(2) };
union withsource=TableName View_1, View_2
Ausgabe
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
Ausgabe
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
.
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für