Koppling mellan kluster
En koppling mellan kluster omfattar anslutning av data från datauppsättningar som finns i olika kluster.
I en korsklusterkoppling kan frågan köras på tre möjliga platser, var och en med en specifik referensbeteckning i hela dokumentet:
- Lokalt kluster: Det kluster som begäran skickas till, vilket även kallas det kluster som är värd för databasen i kontexten.
- Vänster kluster: Klustret som är värd för data på vänster sida av kopplingsåtgärden.
- Rätt kluster: Klustret som är värd för data på höger sida av kopplingsåtgärden.
Klustret som kör frågan hämtar data från det andra klustret.
Anteckning
Om data på vänster och höger sida av en kopplingsåtgärd finns i samma kluster betraktas de inte som en koppling mellan kluster, även om data finns utanför det lokala klustret.
Syntax
[ cluster(
ClusterName).database(
DatabaseName).
]LeftTable|
...
|
join
[ hint.remote=
Strategi ] (
[ cluster(
ClusterName).database(
DatabaseName).
]RightTable|
...
)
på villkor
Läs mer om syntaxkonventioner.
Parametrar
Namn | Typ | Obligatorisk | Beskrivning |
---|---|---|---|
LeftTable | string |
✔️ | Den vänstra tabellen eller tabelluttrycket vars rader ska sammanfogas. Betecknas som $left . |
Strategi | string |
Avgör på vilket kluster kopplingen ska köras. Värden som stöds är: left , right , local och auto . Mer information finns i Strategier. |
|
ClusterName | string |
Om data för kopplingen finns utanför det lokala klustret använder du funktionen cluster() för att ange klustret. | |
Databasename | string |
Om data för kopplingen finns utanför den lokala databaskontexten använder du funktionen database() för att ange databasen. | |
RightTable | string |
✔️ | Den högra tabellen eller tabelluttrycket vars rader ska sammanfogas. Betecknas som $right . |
Villkor | string |
✔️ | Avgör hur rader från LeftTable matchas med rader från RightTable. Om de kolumner som du vill matcha har samma namn i båda tabellerna använder du syntaxen ON ColumnName. Annars använder du syntaxen ON $left. LeftColumn== $right. RightColumn. Om du vill ange flera villkor kan du antingen använda nyckelordet "och" eller separera dem med kommatecken. Om du använder kommatecken utvärderas villkoren med den logiska operatorn "och". |
Strategier
I följande lista förklaras de värden som stöds för parametern Strategy :
-
left
: Kör koppling i klustret i den vänstra tabellen eller det vänstra klustret. -
right
: Kör koppling i klustret i den högra tabellen eller i rätt kluster. -
local
: Kör koppling i klustret i det aktuella klustret eller det lokala klustret. -
auto
: (Standard) Kusto fattar fjärrkommunikationsbeslutet.
Anteckning
Tipset om anslutningskommunikation ignoreras om den tipsade strategin inte gäller för kopplingsåtgärden.
Så här fungerar den automatiska strategin
Som standard auto
avgör strategin var kopplingen mellan kluster ska köras baserat på följande regler:
- Om en av tabellerna finns i det lokala klustret utförs kopplingen på det lokala klustret.
- Om båda tabellerna finns utanför det lokala klustret utförs anslutningen på rätt kluster.
Överväg följande exempel:
// 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
auto
Med strategin skulle "Exempel 1" köras på det lokala klustret. I exempel 2, förutsatt att inget av klustren är det lokala klustret, skulle kopplingen köras på rätt kluster.
Saker att tänka på gällande prestanda
För optimala prestanda rekommenderar vi att du kör frågan i klustret som innehåller den största tabellen.
Nu ska vi titta på följande exempel igen:
// 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
"Exempel 1" är inställt på att köras på det lokala klustret, men om datauppsättningen som skapas av T | ...
är mindre än en som produceras av cluster("B").database("DB").T2 | ...
så skulle det vara mer effektivt att köra kopplingsåtgärden på klustret B
, i det här fallet rätt kluster, i stället för på det lokala klustret.
Följande fråga gör detta med hjälp right
av strategin.
right
Med strategin utförs kopplingsåtgärden i det högra klustret, även om den vänstra tabellen finns i det lokala klustret.
T | ... | join hint.remote=right (cluster("B").database("DB").T2 | ...) on Col1
Relaterat innehåll
Den här funktionen stöds inte i Azure Monitor
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för