Udostępnij za pośrednictwem


Sprzężenie między klastrami

Dotyczy: ✅Microsoft Fabric

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|
| join [ hint.remote=Strategia ](
  [ cluster(ClusterName DatabaseName|
) 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, , rightlocali 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 ONColumnName. 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 auto określa, gdzie jest wykonywane 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. Na przykład w przypadku strategii automatycznej to zapytanie jest wykonywane w klastrze lokalnym:

    T | ... | join (cluster("B").database("DB").T2 | ...) on Col1
    
  • Jeśli obie tabele są hostowane poza klastrem lokalnym, sprzężenia są wykonywane w odpowiednim klastrze. Na przykład przy założeniu, że żaden klaster nie jest klastrem lokalnym, sprzężenia zostaną wykonane w odpowiednim klastrze:

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

Zagadnienia dotyczące wydajności

Aby uzyskać optymalną wydajność, zalecamy uruchomienie zapytania w klastrze zawierającym największą tabelę.

W poniższym przykładzie, jeśli zestaw danych utworzony przez T | ... jest mniejszy niż jeden utworzony przez cluster("B").database("DB").T2 | ..., bardziej wydajne byłoby wykonanie operacji sprzężenia w klastrze B, w tym przypadku właściwy klaster zamiast w klastrze lokalnym.

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

Możesz ponownie napisać zapytanie, aby użyć hint.remote=right w celu zoptymalizowania wydajności. W ten sposób 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