operator join

Voeg de rijen van twee tabellen samen tot een nieuwe tabel door de waarden van de opgegeven kolommen uit elke tabel te vergelijken.

Kusto-querytaal (KQL) biedt veel soorten joins die elk op verschillende manieren van invloed zijn op het schema en de rijen in de resulterende tabel. Als u bijvoorbeeld een inner join gebruikt, heeft de tabel dezelfde kolommen als de linkertabel, plus de kolommen uit de rechtertabel. Als de ene tabel altijd kleiner is dan de andere, gebruikt u deze als de linkerkant van de operator voor de join beste prestaties.

In de volgende afbeelding ziet u een visuele weergave van de bewerking die door elke join wordt uitgevoerd.

Diagram met typen querydeelnames.

Syntax

LeftTable|join [ kind=JoinFlavor ] [ Hints ] (RightTable)onConditions

Meer informatie over syntaxisconventies.

Parameters

Naam Type Vereist Beschrijving
LeftTable string ✔️ De linkertabel of tabelvormige expressie, ook wel de buitenste tabel genoemd, waarvan de rijen moeten worden samengevoegd. Aangeduid als $left.
JoinFlavor string Het type join dat moet worden uitgevoerd: innerunique, inner, leftouter, rightouter, fullouter, leftanti, rightanti, leftsemi. rightsemi De standaardwaarde is innerunique. Zie Returns (Retourneert) voor meer informatie over joins.
Hints string Nul of meer door spaties gescheiden joinhints in de vorm van Naamwaarde= die het gedrag van de rijovereenkomst en het uitvoeringsplan bepalen. Zie Hints voor meer informatie.
Rechtstabel string ✔️ De rechtertabel of tabellaire expressie, ook wel de binnenste tabel genoemd, waarvan de rijen moeten worden samengevoegd. Aangeduid als $right.
Voorwaarden string ✔️ Bepaalt hoe rijen van LeftTable worden vergeleken met rijen uit RightTable. Als de kolommen die u wilt vergelijken dezelfde naam hebben in beide tabellen, gebruikt u de syntaxis ONColumnName. Gebruik anders de syntaxis ON $left.LeftColumn==$right.RightColumn. Als u meerdere voorwaarden wilt opgeven, kunt u het trefwoord 'en' gebruiken of deze scheiden met komma's. Als u komma's gebruikt, worden de voorwaarden geëvalueerd met behulp van de logische operator 'en'.

Tip

Als de ene tabel altijd kleiner is dan de andere, gebruikt u deze als de linkerkant van de join voor de beste prestaties.

Hints

Hint-toets Waarden Beschrijving
hint.remote auto, left, local, right Zie Join tussen clusters
hint.strategy=broadcast Hiermee geeft u de manier op om de querybelasting op clusterknooppunten te delen. Zie broadcast join
hint.shufflekey=<key> De shufflekey query deelt de querybelasting op clusterknooppunten met behulp van een sleutel om gegevens te partitioneren. Bekijk willekeurige query
hint.strategy=shuffle De shuffle strategiequery deelt de querybelasting op clusterknooppunten, waarbij elk knooppunt één partitie van de gegevens verwerkt. Bekijk willekeurige query
Naam Waarden Beschrijving
hint.remote auto, left, local, right
hint.strategy=broadcast Hiermee geeft u de manier op om de querybelasting op clusterknooppunten te delen. Zie broadcast join
hint.shufflekey=<key> De shufflekey query deelt de querybelasting op clusterknooppunten met behulp van een sleutel om gegevens te partitioneren. Bekijk willekeurige query
hint.strategy=shuffle De shuffle strategiequery deelt de querybelasting op clusterknooppunten, waarbij elk knooppunt één partitie van de gegevens verwerkt. Bekijk willekeurige query

Notitie

De joinhints veranderen de semantische van join niet, maar kunnen wel van invloed zijn op de prestaties.

Retouren

Het retourschema en de rijen zijn afhankelijk van de join-smaak. De join-smaak wordt opgegeven met het soort trefwoord. In de volgende tabel ziet u de ondersteunde join-varianten. Als u voorbeelden wilt zien voor een specifieke join-smaak, selecteert u de koppeling in de kolom Join-smaak .

Join-smaak Retouren Illustratie
innerunique (standaard) Inner join met ontdubbeling aan de linkerkant
Schema: alle kolommen uit beide tabellen, inclusief de overeenkomende sleutels
Rijen: alle ontdubbelde rijen uit de linkertabel die overeenkomen met de rijen uit de rechtertabel
Innerlijke Standaard inner join
Schema: alle kolommen uit beide tabellen, inclusief de overeenkomende sleutels
Rijen: alleen overeenkomende rijen uit beide tabellen
links-outer Left outer join
Schema: alle kolommen uit beide tabellen, inclusief de overeenkomende sleutels
Rijen: alle records uit de linkertabel en alleen overeenkomende rijen uit de rechtertabel
rightouter Right outer join
Schema: alle kolommen uit beide tabellen, inclusief de overeenkomende sleutels
Rijen: alle records uit de rechtertabel en alleen overeenkomende rijen uit de linkertabel
fullouter Volledige outer join
Schema: alle kolommen uit beide tabellen, inclusief de overeenkomende sleutels
Rijen: alle records uit beide tabellen met niet-overeenkomende cellen die zijn gevuld met null
leftsemi Semi-join links
Schema: alle kolommen uit de linkertabel
Rijen: alle records uit de linkertabel die overeenkomen met records uit de rechtertabel
leftanti, anti, leftantisemi Linker anti-join en semi variant
Schema: alle kolommen uit de linkertabel
Rijen: alle records uit de linkertabel die niet overeenkomen met records uit de rechtertabel
rightsemi Rechter semi-join
Schema: alle kolommen uit de rechtertabel
Rijen: alle records uit de rechtertabel die overeenkomen met records uit de linkertabel
rightanti, rightantisemi Rechter anti-join en semi variant
Schema: alle kolommen uit de rechtertabel
Rijen: alle records uit de rechtertabel die niet overeenkomen met records uit de linkertabel

Cross-join

KQL biedt geen cross-join-smaak. U kunt echter een cross-join-effect bereiken met behulp van een tijdelijke aanduiding voor sleutels.

In het volgende voorbeeld wordt een tijdelijke aanduidingssleutel toegevoegd aan beide tabellen en vervolgens gebruikt voor de inner join-bewerking, waardoor in feite een cross-join-achtig gedrag wordt bereikt:

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