Anslutning mellan kluster
Gäller för: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
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 det här dokumentet:
- Lokalt kluster: Klustret som begäran skickas till, vilket även kallas klustret som är värd för databasen i kontext.
- vänsterkluster: Klustret som är värd för data till vänster i kopplingsåtgärden.
- right cluster: Klustret som är värd för data till höger om kopplingsåtgärden.
Klustret som kör frågan hämtar data från det andra klustret.
Not
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|
...
)
om villkor
Läs mer om syntaxkonventioner.
Parametrar
Namn | Typ | Krävs | Beskrivning |
---|---|---|---|
LeftTable | string |
✔️ | Den vänstra tabellen eller tabelluttrycket vars rader ska sammanfogas. Anges som $left . |
strategi | string |
Avgör vilket kluster som kopplingen ska köras på. Värden som stöds är: left , right , local och auto . Mer information finns i Strategies. |
|
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 |
✔️ | Det högra tabell- eller tabelluttrycket vars rader ska sammanfogas. Anges 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 hjälp av 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 i 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.
Not
Tipset om anslutningskommunikation ignoreras om den antydda strategin inte gäller för kopplingsåtgärden.
Så här fungerar den automatiska strategin
Som standard avgör auto
-strategin var kopplingen mellan kluster körs baserat på följande regler:
Om en av tabellerna finns i det lokala klustret utförs kopplingen i det lokala klustret. Med den automatiska strategin körs till exempel den här frågan i det lokala klustret:
T | ... | join (cluster("B").database("DB").T2 | ...) on Col1
Om båda tabellerna finns utanför det lokala klustret utförs kopplingen i rätt kluster. Om inget av klustren till exempel är det lokala klustret körs kopplingen i rätt kluster:
cluster("B").database("DB").T | ... | join (cluster("C").database("DB2").T2 | ...) on Col1
Prestandaöverväganden
För optimala prestanda rekommenderar vi att du kör frågan i klustret som innehåller den största tabellen.
I följande exempel, om datauppsättningen som produceras av T | ...
är mindre än en som produceras av cluster("B").database("DB").T2 | ...
skulle det vara mer effektivt att köra kopplingsåtgärden på kluster B
, i det här fallet rätt kluster i stället för på det lokala klustret.
T | ... | join (cluster("B").database("DB").T2 | ...) on Col1
Du kan skriva om frågan för att använda hint.remote=right
för att optimera prestandan. På så sätt 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