join-operatorn

Sammanfoga raderna i två tabeller för att skapa en ny tabell genom att matcha värdena för de angivna kolumnerna från varje tabell.

Kusto-frågespråk (KQL) erbjuder många typer av kopplingar som var och en påverkar schemat och raderna i den resulterande tabellen på olika sätt. Om du till exempel använder en inner koppling har tabellen samma kolumner som den vänstra tabellen, plus kolumnerna från den högra tabellen. För bästa prestanda, om en tabell alltid är mindre än den andra, använder du den som vänster sida av operatorn join .

Följande bild ger en visuell representation av den åtgärd som utförs av varje koppling.

Diagram som visar frågekopplingstyper.

Syntax

LeftTable|join [ kind=JoinFlavor ] [ Tips ] (RightTable)onVillkor

Läs mer om syntaxkonventioner.

Parametrar

Namn Typ Obligatorisk Beskrivning
LeftTable string ✔️ Den vänstra tabellen eller tabelluttrycket, som ibland kallas den yttre tabellen, vars rader ska sammanfogas. Betecknas som $left.
JoinFlavor string Typen av koppling som ska utföras: innerunique, inner, leftouter, rightouter, fullouter, leftanti, rightanti, , leftsemirightsemi. Standardvärdet är innerunique. Mer information om kopplingssmak finns i Returnerar.
Tips string Noll eller flera blankstegsavgränsade kopplingstips i form av Namnvärde= som styr beteendet för radmatchningsåtgärden och körningsplanen. Mer information finns i Tips.
RightTable string ✔️ Den högra tabellen eller tabelluttrycket, som ibland kallas den inre tabellen, vars rader ska sammanfogas. Betecknas som $right.
Villkor string ✔️ Avgör hur rader från LeftTable matchas med rader från RightTable. Om de kolumner som du vill matcha har samma namn i båda tabellerna använder du syntaxen ONColumnName. Annars använder du syntaxen ON $left.LeftColumn==$right.RightColumn. Om du vill ange flera villkor kan du antingen använda nyckelordet "och" eller separera dem med kommatecken. Om du använder kommatecken utvärderas villkoren med hjälp av den logiska operatorn "och".

Tips

För bästa prestanda, om en tabell alltid är mindre än den andra, använder du den som vänster sida av kopplingen.

Tips

Tipsnyckel Värden Beskrivning
hint.remote auto, left, local, right Se Koppla mellan kluster
hint.strategy=broadcast Anger hur du delar frågebelastningen på klusternoder. Se sändningsanslutning
hint.shufflekey=<key> Frågan shufflekey delar frågebelastningen på klusternoder med hjälp av en nyckel för att partitioneringsdata. Se shuffle-fråga
hint.strategy=shuffle Strategifrågan shuffle delar frågebelastningen på klusternoder, där varje nod bearbetar en partition av data. Se shuffle-fråga
Name Värden Beskrivning
hint.remote auto, left, local, right
hint.strategy=broadcast Anger hur du delar frågebelastningen på klusternoder. Se sändningsanslutning
hint.shufflekey=<key> Frågan shufflekey delar frågebelastningen på klusternoder med hjälp av en nyckel för att partitioneringsdata. Se shuffle-fråga
hint.strategy=shuffle Strategifrågan shuffle delar frågebelastningen på klusternoder, där varje nod bearbetar en partition av data. Se shuffle-fråga

Anteckning

Kopplingstipsen ändrar inte semantiken join för men kan påverka prestanda.

Returer

Returschemat och raderna beror på kopplingssmaken. Kopplingssmaken anges med typnyckelordet . I följande tabell visas de anslutningssmak som stöds. Om du vill se exempel på en specifik kopplingssmak väljer du länken i kolumnen Join flavor (Anslut smak).

Join flavor Returer Illustration
innerunique (standard) Inre koppling med deduplicering på vänster sida
Schema: Alla kolumner från båda tabellerna, inklusive matchande nycklar
Rader: Alla deduplicerade rader från den vänstra tabellen som matchar rader från den högra tabellen
Inre Inre standardkoppling
Schema: Alla kolumner från båda tabellerna, inklusive matchande nycklar
Rader: Endast matchande rader från båda tabellerna
leftouter Vänster yttre koppling
Schema: Alla kolumner från båda tabellerna, inklusive matchande nycklar
Rader: Alla poster från den vänstra tabellen och endast matchande rader från den högra tabellen
rightouter Höger yttre koppling
Schema: Alla kolumner från båda tabellerna, inklusive matchande nycklar
Rader: Alla poster från den högra tabellen och endast matchande rader från den vänstra tabellen
fullouter Fullständig yttre koppling
Schema: Alla kolumner från båda tabellerna, inklusive matchande nycklar
Rader: Alla poster från båda tabellerna med omatchade celler ifyllda med null
leftsemi Vänster halvkoppling
Schema: Alla kolumner från den vänstra tabellen
Rader: Alla poster från den vänstra tabellen som matchar poster från den högra tabellen
leftanti, anti, leftantisemi Vänster antikoppling och semi-variant
Schema: Alla kolumner från den vänstra tabellen
Rader: Alla poster från den vänstra tabellen som inte matchar poster från den högra tabellen
rightsemi Höger semikoppling
Schema: Alla kolumner från den högra tabellen
Rader: Alla poster från den högra tabellen som matchar poster från den vänstra tabellen
rightanti, rightantisemi Höger antikoppling och semi variant
Schema: Alla kolumner från den högra tabellen
Rader: Alla poster från den högra tabellen som inte matchar poster från den vänstra tabellen

Korskoppling

KQL ger ingen korskopplingssmak. Du kan dock uppnå en korskopplingseffekt med hjälp av en metod för platshållarnyckel.

I följande exempel läggs en platshållarnyckel till i båda tabellerna och används sedan för den inre kopplingsåtgärden, vilket effektivt uppnår ett korskopplingsliknande beteende:

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