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).database(|
| join [ hint.remote=Strategie ](
  [ cluster(Název_databáze).database(|
) 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 ONColumnName. 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 auto určuje, kde se provádí spojení 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. Například s automatickou strategií se tento dotaz spustí v místním clusteru:

    T | ... | join (cluster("B").database("DB").T2 | ...) on Col1
    
  • Pokud jsou obě tabulky hostované mimo místní cluster, provede se spojení na správném clusteru. Například za předpokladu, že ani jeden cluster není místní cluster, spojení by se spustilo na správném clusteru:

    cluster("B").database("DB").T | ... | join (cluster("C").database("DB2").T2 | ...) on Col1
    

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.

Pokud je v následujícím příkladu datová sada vytvořená T | ... menší než datová sada vytvořená cluster("B").database("DB").T2 | ... pak by byla efektivnější spustit operaci spojení v clusteru B, v tomto případě je to správný cluster místo v místním clusteru.

T | ... | join (cluster("B").database("DB").T2 | ...) on Col1

Dotaz můžete přepsat tak, aby používal hint.remote=right k optimalizaci výkonu. Tímto způsobem 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