Operátor join napříč clustery

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

Ve spojení mezi clustery je možné dotaz spustit na třech možných místech, 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 odesílá. Označuje se také jako cluster hostující databázi v kontextu.
  • Levý cluster: Cluster hostující data na levé straně operace připojení.
  • Pravý cluster: Cluster hostující data na pravé straně operace připojení.

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.

Syntax

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

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

Parametry

Název Typ Vyžadováno Popis
Levá tabulka string ✔️ Levá tabulka nebo tabulkový výraz, jehož řádky se mají sloučit. Označuje se jako $left.
Strategie string Určuje cluster, na kterém se má provést spojení. Podporované hodnoty jsou: left, right, locala auto. Další informace najdete v tématu Strategie.
Název clusteru string Pokud se data pro spojení nacházejí mimo místní cluster, použijte k určení clusteru funkci cluster( ).
Databasename string Pokud se data pro spojení nacházejí mimo kontext místní databáze, použijte k určení databáze funkci database( ).
RightTable string ✔️ Pravá tabulka nebo tabulkový výraz, jehož řádky se mají sloučit. Označuje se jako $right.
Podmínky string ✔️ Určuje shodu řádků z tabulky LeftTable s řádky z tabulky RightTable. Pokud mají sloupce, které chcete porovnat, stejný název v obou tabulkách, použijte syntaxi ONColumnName. V opačném případě použijte syntaxi ON $left.LeftColumn==$right.RightColumn. Pokud chcete zadat více podmínek, můžete buď použít klíčové slovo "a", nebo je oddělit čárkami. Pokud použijete čárky, podmínky se vyhodnotí pomocí logického operátoru "a".

Strategie

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

  • left: Spusťte join v clusteru levé tabulky nebo levého clusteru.
  • right: Spusťte join 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ěda ke vzdálené komunikace spojení se ignoruje, pokud se naznačená strategie nevztahuje na operaci spojení.

Jak automatická strategie funguje

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

  • Pokud je některá 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.

Představte si 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

V případě této auto strategie by se v místním clusteru spustil příklad 1. V příkladu 2 se za předpokladu, že ani jeden z clusterů není místním clusterem, provede se spojení na správném clusteru.

Otázky výkonu

Pro zajištění 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á nástrojem T | ... menší než datová sada vytvořená nástrojem cluster("B").database("DB").T2 | ... , bylo by efektivnější spustit operaci připojení v clusteru B, v tomto případě správném clusteru, a ne v místním clusteru.

Následující dotaz to provede pomocí right strategie. V případě strategie se right 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

Tato funkce není ve službě Azure Monitor podporována.