Rechter anti-join
Een van de jointypen die beschikbaar zijn in het dialoogvenster Samenvoegen in Power Query is een rechter anti-join, waarmee alleen rijen uit de rechtertabel worden opgehaald die geen overeenkomende rijen uit de linkertabel bevatten. Meer informatie: Overzicht van samenvoegbewerkingen
Afbeelding toont een tabel aan de linkerkant met de kolommen Date, CountryID en Units. De kolom CountryID met nadruk bevat waarden van 1 in rij 1 en 2, 3 in rij 3 en 2 in rij 4. Een tabel aan de rechterkant bevat de kolommen ID en Land. De kolom met nadruk-id's bevat waarden van 3 in rij 1 (die Panama aangeeft) en 4 in rij 2 (die Spanje aangeeft). Een tabel onder de eerste twee tabellen bevat de kolommen Date, CountryID, Units en Country. De tabel heeft één rij, waarbij de datum, land-id en eenheden zijn ingesteld op null en het land is ingesteld op Spanje.
In dit artikel worden voorbeeldgegevens gebruikt om te laten zien hoe u een samenvoegbewerking uitvoert met de juiste anti-join. De voorbeeldbrontabellen voor dit voorbeeld zijn:
Verkoop: Deze tabel bevat de velden Datum, Land-id en Eenheden. CountryID is een geheel getal dat de unieke id van de tabel Landen vertegenwoordigt.
Landen: Dit is een referentietabel met de velden-id en Land. Het id-veld vertegenwoordigt de unieke id voor elke record.
In dit voorbeeld voegt u beide tabellen samen, met de tabel Verkoop als de linkertabel en de tabel Landen als de rechtertabel. De join wordt gemaakt tussen de volgende kolommen.
Veld uit de tabel Sales | Veld uit de tabel Landen |
---|---|
CountryID | id |
Het doel is om een tabel zoals de volgende te maken, waarbij alleen de rijen uit de rechtertabel die niet overeenkomen met de linkertabel, worden bewaard. Als veelvoorkomende use-case vindt u alle rijen die beschikbaar zijn in de rechtertabel, maar niet in de linkertabel.
Rechter anti-join laatste tabel met de kolommen Date, CountryID, Units en Country, met één rij met null in alle kolommen behalve Country, die Spanje bevat.
Een juiste anti-join uitvoeren
- Selecteer de verkoopquery en selecteer vervolgens Samenvoegquery's.
- Selecteer In het dialoogvenster Samenvoegen, onder De tabel Rechts voor samenvoegen, Landen.
- Selecteer in de tabel Verkoop de kolom CountryID .
- Selecteer de id-kolom in de tabel Landen.
- Selecteer rechts in de sectie Soort join.
- Selecteer OK.
Tip
Bekijk het bericht onder aan het dialoogvenster met de tekst 'De selectie sluit 1 van 2 rijen uit de tweede tabel uit'. Dit bericht is van cruciaal belang om inzicht te krijgen in het resultaat dat u krijgt van deze bewerking.
In de tabel Landen hebt u het land Spanje met een id van 4, maar er zijn geen records voor CountryID 4 in de tabel Verkoop . Daarom heeft slechts één van twee rijen uit de rechtertabel (tweede) een overeenkomst gevonden. Vanwege hoe de juiste anti-join werkt, ziet u nooit rijen uit de linkertabel (eerste) in de uitvoer van deze bewerking.
Vouw vanuit de zojuist gemaakte kolom Landen het veld Land uit. Schakel het selectievakje Oorspronkelijke kolomnaam als voorvoegsel gebruiken niet in.
Nadat u deze bewerking hebt uitgevoerd, maakt u een tabel die eruitziet als de volgende afbeelding. Het nieuw uitgevouwen veld Land heeft geen waarden. Dat komt doordat de rechter anti-join geen waarden uit de linkertabel bevat, maar alleen rijen uit de rechtertabel bewaart.
Laatste tabel met de kolommen Date, CountryID, Units en Country, met één rij met null in alle kolommen, behalve Country, die Spanje bevat.