Dela via


Anslutning mellan kluster

Gäller för: ✅Microsoft FabricAzure Data ExplorerAzure MonitorMicrosoft 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, localoch 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 ONColumnName. 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