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).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 , 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 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