Delen via


koppeloperator

Van toepassing op: ✅Microsoft FabricAzure Data ExplorerAzure MonitorMicrosoft Sentinel

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

Kusto Query Language (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 tabel, gebruikt u deze als de linkerkant van de join operator.

De volgende afbeelding biedt een visuele weergave van de bewerking die door elke join wordt uitgevoerd. De kleur van de arcering vertegenwoordigt de geretourneerde kolommen en de gebieden die gearceerd zijn, geven de geretourneerde rijen weer.

Diagram met querydeelnametypen.

Syntaxis

Linkertabel|join [ JoinFlavor ] [=kindHints ] (RightTable-voorwaarden)on

Meer informatie over syntaxisconventies.

Parameterwaarden

Naam Typologie Verplicht Description
Linkertabel string ✔️ De linkertabel of tabellaire 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, , leftouterinner, rightouter, fullouter, leftanti, . rightsemileftsemirightanti De standaardwaarde is innerunique. Zie Returns voor meer informatie over joins.
Hints string Nul of meer door spaties gescheiden joinhints in de vorm van Naamwaarde= waarmee het gedrag van de bewerking en het uitvoeringsplan voor rijovereenkomsten wordt bepaald. Zie Hints voor meer informatie.
RightTable 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 uit LeftTable overeenkomen 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.LeftColumnRightColumn==$right.. Als u meerdere voorwaarden wilt opgeven, kunt u het trefwoord 'en' gebruiken of scheiden met komma's. Als u komma's gebruikt, worden de voorwaarden geëvalueerd met behulp van de logische operator 'and'.

Aanbeveling

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

Hints

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

Opmerking

De join-hints wijzigen niet het semantische van join maar kunnen van invloed zijn op de prestaties.

Retouren

Het retourschema en de rijen zijn afhankelijk van de joinsmaak. De joinsmaak wordt opgegeven met het soort trefwoord. In de volgende tabel ziet u de ondersteunde joins. Als u voorbeelden voor een specifieke joinsmaak wilt zien, 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 rijen uit de rechtertabel
binnenste Standaard inner join
Schema: Alle kolommen uit beide tabellen, inclusief de overeenkomende sleutels
Rijen: Alleen overeenkomende rijen uit beide tabellen
leftouter Linksbuitenste verbinding
Schema: Alle kolommen uit beide tabellen, inclusief de overeenkomende sleutels
Rijen: Alle records uit de linkertabel en alleen overeenkomende rijen uit de rechtertabel
rightouter Rechter buitenste 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 Volledig outer join
Schema: Alle kolommen uit beide tabellen, inclusief de overeenkomende sleutels
Rijen: Alle records uit beide tabellen met niet-overeenkomende cellen gevuld met null
leftsemi Linker semi-join
Schema: Alle kolommen uit de linkertabel
Rijen: Alle records uit de linkertabel die overeenkomen met records uit de rechtertabel
leftanti, antileftantisemi 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 de sleutelbenadering.

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

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