Sdílet prostřednictvím


Operátor join napříč clustery

Platí pro: ✅Microsoft FabricAzure Data Explorer✅Azure MonitorMicrosoft Sentinel

Spojení mezi clustery zahrnuje spojování dat z datových sad, které se nacházejí v různých clusterech.

Ve spojení mezi clustery je možné dotaz spustit ve třech možných umístěních, z nichž každý má konkrétní označení pro referenci v celém tomto dokumentu:

  • Místní cluster: Cluster, do kterého se požadavek odešle, což se označuje také jako cluster, který je hostitelem databáze v kontextu.
  • Levý cluster: Cluster hostující data na levé straně operace spojení.
  • Pravý cluster: Cluster hostující data na pravé straně operace spojení.

Cluster, který spouští dotaz, načte data z druhého clusteru.

Poznámka:

Pokud jsou data na levé a pravé straně operace spojení hostovaná ve stejném clusteru, nepovažují se za spojení mezi clustery, a to ani v případě, že jsou data hostovaná mimo místní cluster.

Syntaxe

[ cluster(Název_databáze)._clusteru).database(]LeftTable ... |
|join [ hint.remote=Strategie ](
  [ cluster(Název_databáze)._clusteru).database(]RightTable ... |
) o podmínkách

Přečtěte si další informace o konvencích syntaxe.

Parametry

Název Type Požadováno Popis
Levá tabulka string ✔️ Levá tabulka nebo tabulkový výraz, jehož řádky se mají sloučit. Označeno jako $left.
Strategie string Určuje cluster, na kterém se má spojení spustit. Podporované hodnoty jsou: left, right, locala auto. Další informace naleznete v tématu Strategie.
Název clusteru string Pokud se data pro připojení nacházejí mimo místní cluster, pomocí funkce cluster() určete cluster.
Název databáze string Pokud se data pro spojení nacházejí mimo kontext místní databáze, zadejte databázi pomocí funkce database().
RightTable string ✔️ Pravá tabulka nebo tabulkový výraz, jehož řádky se mají sloučit. Označeno jako $right.
Podmínky string ✔️ Určuje, jak se řádky z tabulky LeftTable shodují s řádky z tabulky RightTable. Pokud sloupce, které chcete shodovat, mají v obou tabulkách stejný název, použijte syntaxi ON ColumnName. Jinak použijte syntaxi ON $left.LeftColumn $right.==RightColumn RightColumn. Pokud chcete zadat více podmínek, můžete použít klíčové slovo "a" nebo je oddělit čárkami. Pokud použijete čárky, podmínky se vyhodnocují pomocí logického operátoru "a".

Strategie

Následující seznam vysvětluje podporované hodnoty parametru Strategie :

  • left: Spusťte spojení v clusteru levé tabulky nebo v levém clusteru.
  • right: Spusťte spojení v clusteru správné tabulky nebo pravého clusteru.
  • local: Spusťte připojení v clusteru aktuálního clusteru nebo v místním clusteru.
  • auto: (Výchozí) Kusto provede rozhodnutí o vzdálené komunikace.

Poznámka:

Nápovědu ke vzdálené komunikace spojení se ignoruje, pokud se na operaci spojení nevztahuje strategie s nápovědou.

Jak automatická strategie funguje

Ve výchozím nastavení strategie určuje, auto kde se má spojovat mezi clustery, na základě následujících pravidel:

  • Pokud je jedna z tabulek hostovaná v místním clusteru, provede se spojení v místním clusteru.
  • Pokud jsou obě tabulky hostované mimo místní cluster, provede se spojení na správném clusteru.

Zvažte následující příklady:

// 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 Při strategii se v místním clusteru spustí příklad 1. V příkladu 2 za předpokladu, že ani jeden cluster není místní cluster, spojení by se spustilo na správném clusteru.

Důležité informace o výkonu

Pokud chcete dosáhnout optimálního výkonu, doporučujeme spustit dotaz v clusteru, který obsahuje největší tabulku.

Pojďme se znovu podívat na následující příklady:

// 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

Příklad 1 je nastavený tak, aby běžel v místním clusteru, ale pokud je datová sada vytvořená T | ... menší než ta, kterou vytváří cluster("B").database("DB").T2 | ... , pak by byla efektivnější spustit operaci připojení v clusteru B, v tomto případě správný cluster místo v místním clusteru.

Následující dotaz to provede pomocí right strategie. right Při strategii se operace spojení provádí v pravém clusteru, i když je levá tabulka v místním clusteru.

T | ... | join hint.remote=right (cluster("B").database("DB").T2 | ...) on Col1