join-Operator
Gilt für: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
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: Die Farbe der Schattierung stellt die zurückgegebenen Spalten dar, und die schattierten Bereiche stellen die zurückgegebenen Zeilen dar.
Syntax
LeftTable |
join
[ kind
=
JoinFlavor ] [ Hinweise ](
RightTable-Bedingungen)
on
Erfahren Sie mehr über Syntaxkonventionen.
Parameter
Name | Type | 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 Verknüpfungshinweise in Form des Namenswerts = , die das Verhalten des Vorgangs mit Zeilenübereinstimmung und des Ausführungsplans 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 ON "ColumnName". Verwenden Sie andernfalls die Syntax ON $left. "LeftColumn RightColumn$right. == ". 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