Operátor join napříč clustery
Platí pro: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft 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 , local a 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