Udostępnij za pośrednictwem


Sprzężenie między klastrami

Dotyczy: ✅Microsoft Fabric✅Azure Data ExplorerAzure MonitorMicrosoft 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, , localrighti 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