Dela via


sammanfogningsoperator

Gäller för: ✅Microsoft FabricAzure Data ExplorerAzure MonitorMicrosoft Sentinel

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

Kusto Query Language (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 innehåller en visuell representation av den åtgärd som utförs av varje koppling. Skuggningens färg representerar de kolumner som returneras och de skuggade områdena representerar de rader som returneras.

Diagram som visar frågekopplingstyper.

Syntax

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

Läs mer om syntaxkonventioner.

Parameterar

Namn Typ Krävs Description
LeftTable string ✔️ Det vänstra tabell- eller tabelluttrycket, som ibland kallas för den yttre tabellen, vars rader ska sammanfogas. Anges som $left.
JoinFlavor string Typ av koppling som ska utföras: innerunique, inner, leftouter, rightouter, fullouter, leftanti, rightanti, leftsemi, . rightsemi Standardvärdet är innerunique. Mer information om kopplingssmaker finns i Returnerar.
Tips string Noll eller fler utrymmesavgrä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 för den inre tabellen, vars rader ska sammanfogas. Anges 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/Råd

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

Hints

Tipsnyckel Värden Description
hint.remote auto, left, , localright Se Anslutning mellan kluster
hint.strategy=broadcast Anger hur du delar frågebelastningen på klusternoder. Se sändningskoppling
hint.shufflekey=<key> Frågan shufflekey delar frågebelastningen på klusternoder med hjälp av en nyckel för att partitioneras data. 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
Namn Värden Description
hint.remote auto, left, , localright
hint.strategy=broadcast Anger hur du delar frågebelastningen på klusternoder. Se sändningskoppling
hint.shufflekey=<key> Frågan shufflekey delar frågebelastningen på klusternoder med hjälp av en nyckel för att partitioneras data. 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

Anmärkning

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

Retur

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

Kopplingssmak Retur 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 sammanslagning
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, , antileftantisemi Vänster antikoppling och semivariant
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 halvkoppling
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 semivariant
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 platshållarnyckelmetod.

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