operator sprzężenia

Scal wiersze dwóch tabel, aby utworzyć nową tabelę, pasując do wartości określonych kolumn z każdej tabeli.

język zapytań Kusto (KQL) oferuje wiele rodzajów sprzężeń, które wpływają na schemat i wiersze w wynikowej tabeli na różne sposoby. Jeśli na przykład używasz inner sprzężenia, tabela ma te same kolumny co lewa tabela oraz kolumny z prawej tabeli. Aby uzyskać najlepszą wydajność, jeśli jedna tabela jest zawsze mniejsza niż druga, użyj jej jako lewej join strony operatora.

Na poniższej ilustracji przedstawiono wizualną reprezentację operacji wykonywanej przez każde sprzężenia.

Diagram przedstawiający rodzaje sprzężenia zapytania.

Składnia

LeftTable|join [ JoinFlavor ] [=kindWskazówki ] (Warunki RightTable)on

Dowiedz się więcej o konwencjach składniowych.

Parametry

Nazwa Typ Wymagane Opis
LeftTable string ✔️ Lewa tabela lub wyrażenie tabelaryczne, czasami nazywane tabelą zewnętrzną, której wiersze mają być scalane. Oznaczono jako $left.
JoinFlavor string Typ sprzężenia do wykonania: innerunique, , leftouterinner, rightouterfullouterrightantileftanti, leftsemi, . rightsemi Wartość domyślna to innerunique. Aby uzyskać więcej informacji na temat smaków sprzężenia, zobacz Zwracanie.
Wskazówki string Zero lub więcej wskazówek sprzężenia rozdzielanego spacjami w postaci wartości nazwy=, która kontroluje zachowanie operacji dopasowania wiersza i planu wykonywania. Aby uzyskać więcej informacji, zobacz Wskazówki.
RightTable string ✔️ Właściwa tabela lub wyrażenie tabelaryczne, czasami nazywane tabelą wewnętrzną, której wiersze mają być scalane. 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".

Porada

Aby uzyskać najlepszą wydajność, jeśli jedna tabela jest zawsze mniejsza niż druga, użyj jej jako lewej strony sprzężenia.

Wskazówki

Klucz wskazówki Wartości Opis
hint.remote auto, left, local, right Zobacz sprzężenia między klastrami
hint.strategy=broadcast Określa sposób udostępniania obciążenia zapytania w węzłach klastra. Zobacz dołączanie do emisji
hint.shufflekey=<key> shufflekey Zapytanie współudzieli obciążenie zapytania w węzłach klastra przy użyciu klucza do partycjonowania danych. Zobacz zapytanie shuffle
hint.strategy=shuffle shuffle Zapytanie strategii współdzieli obciążenie zapytania w węzłach klastra, gdzie każdy węzeł przetwarza jedną partycję danych. Zobacz zapytanie shuffle
Nazwa Wartości Opis
hint.remote auto, left, local, right
hint.strategy=broadcast Określa sposób udostępniania obciążenia zapytania w węzłach klastra. Zobacz dołączanie do emisji
hint.shufflekey=<key> shufflekey Zapytanie współudzieli obciążenie zapytania w węzłach klastra przy użyciu klucza do partycjonowania danych. Zobacz zapytanie shuffle
hint.strategy=shuffle shuffle Zapytanie strategii współdzieli obciążenie zapytania w węzłach klastra, gdzie każdy węzeł przetwarza jedną partycję danych. Zobacz zapytanie shuffle

Uwaga

Wskazówki sprzężenia nie zmieniają semantyki, join ale mogą mieć wpływ na wydajność.

Zwraca

Schemat powrotny i wiersze zależą od smaku sprzężenia. Smak sprzężenia jest określony za pomocą słowa kluczowego kind . W poniższej tabeli przedstawiono obsługiwane smaki sprzężenia. Aby wyświetlić przykłady konkretnego smaku sprzężenia, wybierz link w kolumnie sprzężenia .

Sprzężenia smak Zwraca Ilustracji
innerunique (ustawienie domyślne) Sprzężenie wewnętrzne z deduplikacją po lewej stronie
Schemat: Wszystkie kolumny z obu tabel, w tym pasujące klucze
Wiersze: wszystkie deduplikowane wiersze z lewej tabeli, które pasują do wierszy z prawej tabeli
Wewnętrzny Standardowe sprzężenie wewnętrzne
Schemat: Wszystkie kolumny z obu tabel, w tym pasujące klucze
Wiersze: tylko pasujące wiersze z obu tabel
leftouter Lewe sprzężenie zewnętrzne
Schemat: Wszystkie kolumny z obu tabel, w tym pasujące klucze
Wiersze: wszystkie rekordy z lewej tabeli i tylko pasujące wiersze z prawej tabeli
rightouter Prawe sprzężenie zewnętrzne
Schemat: Wszystkie kolumny z obu tabel, w tym pasujące klucze
Wiersze: Wszystkie rekordy z prawej tabeli i tylko pasujące wiersze z lewej tabeli
fullouter Pełne sprzężenie zewnętrzne
Schemat: Wszystkie kolumny z obu tabel, w tym pasujące klucze
Wiersze: wszystkie rekordy z obu tabel z niezgodnymi komórkami wypełnionymi wartością null
leftsemi Lewe sprzężenia półsprzężenia
Schemat: wszystkie kolumny z lewej tabeli
Wiersze: wszystkie rekordy z tabeli po lewej stronie pasujące do rekordów z prawej tabeli
leftanti, anti, leftantisemi Lewy antysprzężenia i wariant półprzeciągowy
Schemat: wszystkie kolumny z lewej tabeli
Wiersze: wszystkie rekordy z lewej tabeli, które nie pasują do rekordów z prawej tabeli
rightsemi Prawe sprzężenia częściowe
Schemat: wszystkie kolumny z prawej tabeli
Wiersze: wszystkie rekordy z prawej tabeli, które pasują do rekordów z lewej tabeli
rightanti, rightantisemi Prawy antysprzężenia i wariant półprzestępy
Schemat: wszystkie kolumny z prawej tabeli
Wiersze: wszystkie rekordy z prawej tabeli, które nie pasują do rekordów z lewej tabeli

Sprzężenia krzyżowe

KQL nie zapewnia smaku sprzężenia krzyżowego. Można jednak osiągnąć efekt sprzężenia krzyżowego przy użyciu metody klucza zastępczego.

W poniższym przykładzie klucz zastępczy jest dodawany do obu tabel, a następnie używany do operacji sprzężenia wewnętrznego, skutecznie osiągając zachowanie przypominające sprzężenie krzyżowe:

X | extend placeholder=1 | join kind=inner (Y | extend placeholder=1) on placeholder