Dela via


fullouter join

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

En fullouter koppling kombinerar effekten av att tillämpa både vänster och höger yttre kopplingar. För kolumner i tabellen som saknar en matchande rad innehåller resultatuppsättningen null värden. För de poster som matchar skapas en enskild rad i resultatuppsättningen som innehåller fält som fylls i från båda tabellerna.

diagram som visar hur kopplingen fungerar.

Syntax

LeftTable|joinkind=fullouter [ Tips ] RightTableonVillkor

Läs mer om syntaxkonventioner.

Parametrar

Namn Typ Krävs Beskrivning
LeftTable string ✔️ Det vänstra tabell- eller tabelluttrycket, som ibland kallas för den yttre tabellen, vars rader ska sammanfogas. Anges som $left.
tips string Noll eller fler blankstegsavgränsade kopplingstips i form av Name=Value 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".

Dricks

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

Namn på parametrar Värden Beskrivning
hint.remote auto, left, local, right Se
hint.strategy=broadcast Anger hur du delar frågebelastningen på klusternoder. Se broadcast join
hint.shufflekey=<key> Den shufflekey frågan delar frågebelastningen på klusternoder med hjälp av en nyckel för att partitioneras data. Se shuffle-fråga
hint.strategy=shuffle Den shuffle strategifrågan delar frågebelastningen på klusternoder, där varje nod bearbetar en partition av data. Se shuffle-fråga

Returnerar

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.

Exempel

Den här exempelfrågan kombinerar rader från både tabellerna X och Y och fyller i saknade värden med NULL där det inte finns någon matchning i den andra tabellen. På så sätt kan du se alla möjliga kombinationer av nycklar från båda tabellerna.

let X = datatable(Key:string, Value1:long)
[
    'a',1,
    'b',2,
    'b',3,
    'c',4
];
let Y = datatable(Key:string, Value2:long)
[
    'b',10,
    'c',20,
    'c',30,
    'd',40
];
X | join kind=fullouter Y on Key

utdata

Nyckel Värde 1 Key1 Värde 2
b 3 b 10
b 2 b 10
c 4 c 20
c 4 c 30
d 40
a 1