Clusterübergreifender Join
Gilt für: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Eine clusterübergreifende Verknüpfung umfasst das Verknüpfen von Daten aus Datasets, die sich in verschiedenen Clustern befinden.
In einer clusterübergreifenden Verknüpfung kann die Abfrage an drei möglichen Stellen ausgeführt werden, die jeweils eine spezifische Referenzbezeichnung in diesem Dokument aufweisen:
- Lokaler Cluster: Der Cluster, an den die Anforderung gesendet wird, der auch als Cluster bezeichnet wird, in dem die Datenbank im Kontext gehostet wird.
- Linker Cluster: Der Cluster, der die Daten auf der linken Seite des Verknüpfungsvorgangs hosten.
- Right cluster: The cluster hosting the data on the right side of the join operation.
Der Cluster, der die Abfrage ausführt, ruft die Daten aus dem anderen Cluster ab.
Hinweis
Wenn die Daten auf der linken und rechten Seite eines Verknüpfungsvorgangs im selben Cluster gehostet werden, wird sie nicht als clusterübergreifende Verknüpfung betrachtet, auch wenn die Daten außerhalb des lokalen Clusters gehostet werden.
Syntax
[ cluster(
ClusterName DatabaseName).
).database(
]LeftTable ... |
|
join
[ hint.remote=
Strategie ](
[ cluster(
ClusterName-Datenbankname).database(
).
]RightTable ... |
)
zu Bedingungen
Erfahren Sie mehr über Syntaxkonventionen.
Parameter
Name | Type | Erforderlich | BESCHREIBUNG |
---|---|---|---|
LeftTable | string |
✔️ | Der linke Tabellen- oder tabellarische Ausdruck, dessen Zeilen zusammengeführt werden sollen. Wird als $left bezeichnet. |
Strategie | string |
Bestimmt den Cluster, auf dem die Verknüpfung ausgeführt werden soll. Unterstützte Werte: left , right , local und auto . Weitere Informationen finden Sie unter "Strategien". |
|
ClusterName | string |
Wenn sich die Daten für die Verknüpfung außerhalb des lokalen Clusters befinden, verwenden Sie die Cluster() -Funktion, um den Cluster anzugeben. | |
DatabaseName | string |
Wenn sich die Daten für die Verknüpfung außerhalb des lokalen Datenbankkontexts befinden, verwenden Sie die Datenbank() -Funktion, um die Datenbank anzugeben. | |
RightTable | string |
✔️ | Der rechte Tabellen- oder tabellarische Ausdruck, dessen 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. |
Strategien
In der folgenden Liste werden die unterstützten Werte für den Strategieparameter erläutert:
left
: Führen Sie die Verknüpfung auf dem Cluster der linken Tabelle oder im linken Cluster aus.right
: Führen Sie die Verknüpfung auf dem Cluster der rechten Tabelle oder im rechten Cluster aus.local
: Führen Sie die Verknüpfung auf dem Cluster des aktuellen Clusters oder lokalen Clusters aus.auto
: (Standard) Kusto trifft die Remotingentscheidung.
Hinweis
Der Hinweis zum Join-Remoting wird ignoriert, wenn die angedeutete Strategie nicht für den Verknüpfungsvorgang gilt.
Funktionsweise der Autostrategie
Standardmäßig bestimmt die auto
Strategie, wo die clusterübergreifende Verknüpfung basierend auf den folgenden Regeln ausgeführt werden soll:
- Wenn eine der Tabellen im lokalen Cluster gehostet wird, wird die Verknüpfung auf dem lokalen Cluster ausgeführt.
- Wenn beide Tabellen außerhalb des lokalen Clusters gehostet werden, wird die Verknüpfung auf dem rechten Cluster ausgeführt.
Betrachten Sie die folgenden Beispiele:
// Example 1
T | ... | join (cluster("B").database("DB").T2 | ...) on Col1
// Example 2
cluster("B").database("DB").T | ... | join (cluster("C").database("DB2").T2 | ...) on Col1
Mit der auto
Strategie wird "Beispiel 1" auf dem lokalen Cluster ausgeführt. In "Beispiel 2" wird die Verknüpfung auf dem rechten Cluster ausgeführt, vorausgesetzt, kein Cluster ist der lokale Cluster.
Überlegungen zur Leistung
Für eine optimale Leistung wird empfohlen, die Abfrage auf dem Cluster auszuführen, der die größte Tabelle enthält.
Sehen wir uns die folgenden Beispiele erneut an:
// Example 1
T | ... | join (cluster("B").database("DB").T2 | ...) on Col1
// Example 2
cluster("B").database("DB").T | ... | join (cluster("C").database("DB2").T2 | ...) on Col1
"Beispiel 1" wird auf den lokalen Cluster ausgeführt, aber wenn das von einem erstellten T | ...
Dataset kleiner als eins cluster("B").database("DB").T2 | ...
ist, wäre es effizienter, den Verknüpfungsvorgang auf dem Cluster B
auszuführen, in diesem Fall der richtige Cluster anstelle des lokalen Clusters.
Mit der folgenden Abfrage wird dies mithilfe der right
Strategie ausgeführt. Bei der right
Strategie wird der Verknüpfungsvorgang auf dem rechten Cluster ausgeführt, auch wenn sich die linke Tabelle im lokalen Cluster befindet.
T | ... | join hint.remote=right (cluster("B").database("DB").T2 | ...) on Col1