Sprzężenie między klastrami
Dotyczy: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Sprzężenia między klastrami obejmują dołączanie danych z zestawów danych, które znajdują się w różnych klastrach.
W sprzężeniu między klastrami zapytanie można wykonać w trzech możliwych lokalizacjach, z których każde ma określone oznaczenie do odwołania w tym dokumencie:
- Klaster lokalny: klaster, do którego jest wysyłane żądanie, znany również jako klaster hostjący bazę danych w kontekście.
- Klaster po lewej stronie: klaster hostuje dane po lewej stronie operacji sprzężenia.
- Klaster prawy: klaster hostuje dane po prawej stronie operacji sprzężenia.
Klaster, który uruchamia zapytanie, pobiera dane z innego klastra.
Uwaga
Jeśli dane po lewej i prawej stronie operacji sprzężenia są hostowane w tym samym klastrze, nie są traktowane jako sprzężenia między klastrami, nawet jeśli dane są hostowane poza klastrem lokalnym.
Składnia
[ cluster(
ClusterName DatabaseName).
).database(
]LeftTable ... |
|
join
[ hint.remote=
Strategia ](
[ cluster(
ClusterName DatabaseName).
).database(
]RightTable ... |
)
na warunkach
Dowiedz się więcej na temat konwencji składni.
Parametry
Nazwisko | Type | Wymagania | opis |
---|---|---|---|
LeftTable | string |
✔️ | Lewa tabela lub wyrażenie tabelaryczne, którego wiersze mają zostać scalone. Oznaczono jako $left . |
Strategia | string |
Określa klaster, na którym ma zostać wykonane sprzężenie. Obsługiwane wartości to: left , , local right i auto . Aby uzyskać więcej informacji, zobacz Strategie. |
|
Nazwa klastra | string |
Jeśli dane sprzężenia znajdują się poza klastrem lokalnym, użyj funkcji cluster(), aby określić klaster. | |
Nazwa bazy danych | string |
Jeśli dane sprzężenia znajdują się poza kontekstem lokalnej bazy danych, użyj funkcji database(), aby określić bazę danych. | |
RightTable | string |
✔️ | Właściwa tabela lub wyrażenie tabelaryczne, którego wiersze mają zostać scalone. Oznaczono jako $right . |
Warunki | string |
✔️ | Określa, jak wiersze z tabeli LeftTable są dopasowywane do wierszy z tabeli RightTable. Jeśli kolumny, które chcesz dopasować, mają taką samą nazwę w obu tabelach, użyj składni ON ColumnName. W przeciwnym razie użyj składni ON $left. LeftColumn RightColumn== $right. . Aby określić wiele warunków, możesz użyć słowa kluczowego "and" lub oddzielić je przecinkami. Jeśli używasz przecinków, warunki są oceniane przy użyciu operatora logicznego "i". |
Strategie
Poniższa lista zawiera opis obsługiwanych wartości parametru Strategii :
left
: Wykonaj sprzężenia w klastrze tabeli po lewej stronie lub w lewym klastrze.right
: Wykonaj sprzężenia w klastrze prawej tabeli lub w prawym klastrze.local
: Wykonaj sprzężenia w klastrze bieżącego klastra lub klastra lokalnego.auto
: (Ustawienie domyślne) Usługa Kusto podejmuje decyzję o komunikacji wirtualnej.
Uwaga
Wskazówka dotycząca komunikacji zdalnie sprzężenia jest ignorowana, jeśli sugerowana strategia nie ma zastosowania do operacji sprzężenia.
Jak działa strategia automatyczna
Domyślnie strategia określa, auto
gdzie należy wykonać sprzężenia między klastrami na podstawie następujących reguł:
- Jeśli jedna z tabel jest hostowana w klastrze lokalnym, sprzężenia są wykonywane w klastrze lokalnym.
- Jeśli obie tabele są hostowane poza klastrem lokalnym, sprzężenia są wykonywane w odpowiednim klastrze.
Rozważ następujące przykłady:
// 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
W przypadku auto
strategii "Przykład 1" zostanie wykonany w klastrze lokalnym. W przykładzie "Przykład 2" przy założeniu, że żaden klaster nie jest klastrem lokalnym, sprzężenia zostaną wykonane w odpowiednim klastrze.
Zagadnienia dotyczące wydajności
Aby uzyskać optymalną wydajność, zalecamy uruchomienie zapytania w klastrze zawierającym największą tabelę.
Rozważmy ponownie następujące przykłady:
// 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
Wartość "Przykład 1" jest ustawiona na uruchomienie w klastrze lokalnym, ale jeśli zestaw danych utworzony T | ...
przez program jest mniejszy niż jeden wygenerowany cluster("B").database("DB").T2 | ...
przez klaster, bardziej wydajne byłoby wykonanie operacji sprzężenia w klastrze B
, w tym przypadku właściwy klaster, a nie w klastrze lokalnym.
Poniższe zapytanie wykonuje to przy użyciu right
strategii. right
W przypadku strategii operacja sprzężenia jest wykonywana w prawym klastrze, nawet jeśli lewa tabela znajduje się w klastrze lokalnym.
T | ... | join hint.remote=right (cluster("B").database("DB").T2 | ...) on Col1