join-Operator

Mergt die Zeilen zweier Tabellen, um eine neue Tabelle zu erzeugen, indem Werte aus den angegebenen Spalten aus beiden Tabellen zugeordnet werden.

Die Kusto-Abfragesprache (Kusto Query Language, KQL) bietet viele Arten von Joins, die sich jeweils auf unterschiedliche Weise auf das Schema und die Zeilen in der resultierenden Tabelle auswirken. Wenn Sie beispielsweise einen inner-Join verwenden, enthält die Tabelle die gleichen Spalten wie die linke Tabelle sowie die Spalten aus der rechten Tabelle. Wenn eine Tabelle immer kleiner als die andere ist, verwenden Sie diese für die bestmögliche Leistung als die linke Seite des join-Operators.

Die folgende Abbildung enthält eine visuelle Darstellung des Vorgangs, der von jedem Join ausgeführt wird:

Abbildung: Abfragejointypen.

Syntax

LeftTable|join [ kind=JoinFlavor ] [ Hints ] (RightTable)onConditions

Erfahren Sie mehr über Syntaxkonventionen.

Parameter

Name Typ Erforderlich BESCHREIBUNG
LeftTable string ✔️ Die linke Tabelle oder der tabellarischen Ausdruck, die bzw. der manchmal als äußere Tabelle bezeichnet wird, deren Zeilen zusammengeführt werden sollen. Wird als $left bezeichnet.
JoinFlavor string Der Typ des auszuführenden Joins: innerunique, inner, leftouter, rightouter, fullouter, leftanti, rightanti, leftsemi, rightsemi. Der Standardwert ist innerunique. Weitere Informationen zu Join-Varianten finden Sie unter Rückgaben.
Hinweise string Null oder mehr durch Leerzeichen getrennte Join-Hinweise in Form von Name=Wert, die das Verhalten des Vorgangs zum Zuordnen der Zeilen und den Ausführungsplan steuern. Weitere Informationen finden Sie unter Hinweise.
RightTable string ✔️ Die rechte Tabelle oder der tabellarische Ausdruck, die bzw. der manchmal als innere Tabelle bezeichnet werden, deren Zeilen zusammengeführt werden sollen. Wird als $right bezeichnet.
Conditions (MSBuild-Bedingungen) string ✔️ Bestimmt, wie Zeilen aus LeftTable mit Zeilen aus RightTable abgeglichen werden. Wenn die Spalten, die Sie abgleichen möchten, in beiden Tabellen denselben Namen haben, verwenden Sie die Syntax ONColumnName. Verwenden Sie andernfalls die Syntax ON $left.LeftColumn==$right.RightColumn. Um mehrere Bedingungen anzugeben, können Sie entweder das Schlüsselwort „and“ verwenden oder sie durch Kommas trennen. Wenn Sie Kommas verwenden, werden die Bedingungen mit dem logischen Operator „and“ ausgewertet.

Tipp

Wenn eine Tabelle immer kleiner als die andere ist, verwenden Sie diese für die bestmögliche Leistung als die linke Seite des Join.

Hinweise

Hinweisschlüssel Werte Beschreibung
hint.remote auto, left, local, right Siehe clusterübergreifender Join
hint.strategy=broadcast Gibt die Art und Weise an, in der die Abfragelast auf Clusterknoten verteilt wird. Siehe Broadcast-Join
hint.shufflekey=<key> Die shufflekey-Abfrage teilt die Abfragelast auf Clusterknoten auf, wobei ein Schlüssel zum Partitionieren der Daten verwendet wird. Weitere Informationen finden Sie unter Shuffleabfrage
hint.strategy=shuffle Die shuffle-Strategieabfrage teilt die Abfragelast auf Clusterknoten auf, wobei jeder Knoten eine Partition der Daten verarbeitet. Weitere Informationen finden Sie unter Shuffleabfrage
Name Werte Beschreibung
hint.remote auto, left, local, right
hint.strategy=broadcast Gibt die Art und Weise an, in der die Abfragelast auf Clusterknoten verteilt wird. Siehe Broadcast-Join
hint.shufflekey=<key> Die shufflekey-Abfrage teilt die Abfragelast auf Clusterknoten auf, wobei ein Schlüssel zum Partitionieren der Daten verwendet wird. Weitere Informationen finden Sie unter Shuffleabfrage
hint.strategy=shuffle Die shuffle-Strategieabfrage teilt die Abfragelast auf Clusterknoten auf, wobei jeder Knoten eine Partition der Daten verarbeitet. Weitere Informationen finden Sie unter Shuffleabfrage

Hinweis

Die Join-Hinweise ändern nicht die Semantik von join, können sich jedoch auf die Leistung auswirken.

Gibt zurück

Das Rückgabeschema und die Zeilen hängen von der Join-Variante ab. Die Join-Variante wird mit dem kind-Schlüsselwort angegeben. Die folgende Tabelle enthält die unterstützten Verknüpfungsvarianten. Um Beispiele für eine bestimmte Verknüpfungsvariante anzuzeigen, wählen Sie den Link in der Spalte Join flavor aus.

Join-Variante Gibt zurück Abbildung
innerunique (Standard) Innerer Join mit linker seitiger Deduplizierung
Schema: Alle Spalten aus beiden Tabellen, einschließlich der übereinstimmenden Schlüssel.
Zeilen: Alle deduplizierten Zeilen aus der linken Tabelle, die mit Zeilen aus der rechten Tabelle übereinstimmen.
inner Innerer Standard-Join
Schema: Alle Spalten aus beiden Tabellen, einschließlich der übereinstimmenden Schlüssel.
Zeilen: Nur übereinstimmende Zeilen aus beiden Tabellen.
leftouter Left Outer Join
Schema: Alle Spalten aus beiden Tabellen, einschließlich der übereinstimmenden Schlüssel.
Zeilen: Alle Datensätze aus der linken Tabelle und nur übereinstimmende Zeilen aus der rechten Tabelle.
rightouter Rechte äußere Verknüpfung
Schema: Alle Spalten aus beiden Tabellen, einschließlich der übereinstimmenden Schlüssel.
Zeilen: Alle Datensätze aus der rechten Tabelle und nur übereinstimmende Zeilen aus der linken Tabelle.
fullouter Vollständiger äußerer Join
Schema: Alle Spalten aus beiden Tabellen, einschließlich der übereinstimmenden Schlüssel.
Zeilen: Alle Datensätze aus beiden Tabellen mit nicht übereinstimmenden Zellen, die mit NULL aufgefüllt werden.
leftsemi Linker Semi-Join
Schema: Alle Spalten aus der linken Tabelle.
Zeilen: Alle Datensätze aus der linken Tabelle, die mit Datensätzen aus der rechten Tabelle übereinstimmen.
leftanti, anti, leftantisemi Linker Antijoin und Semivariante
Schema: Alle Spalten aus der linken Tabelle.
Zeilen: Alle Datensätze aus der linken Tabelle, die nicht mit Datensätzen aus der rechten Tabelle übereinstimmen.
rightsemi Rechter Semi-Join
Schema: Alle Spalten aus der rechten Tabelle.
Zeilen: Alle Datensätze aus der rechten Tabelle, die mit Datensätzen aus der linken Tabelle übereinstimmen.
rightanti, rightantisemi Rechter Antijoin und Semivariante
Schema: Alle Spalten aus der rechten Tabelle.
Zeilen: Alle Datensätze aus der rechten Tabelle, die nicht mit Datensätzen aus der linken Tabelle übereinstimmen.

Cross-Join

Die KQL stellt keine Cross-Join-Variante bereit. Sie können jedoch einen Cross-Join-Effekt erzielen, indem Sie den Ansatz mit Platzhalterschlüsseln verwenden.

Im folgenden Beispiel wird beiden Tabellen ein Platzhalterschlüssel hinzugefügt und dann für den Inner Join-Vorgang verwendet. Damit wird effektiv ein ähnliches Verhalten wie bei Cross-Join erzielt:

X | extend placeholder=1 | join kind=inner (Y | extend placeholder=1) on placeholder