Semi-joins
En semi-join är motsatsen till en anti-join – ett slags dubbelt negerad join, om man så vill.
En semi-join returnerar de rader från den första tabellen där en matchning kan hittas i den andra tabellen. Principen illustreras i diagrammet nedan.

Syntaxen är densamma som för andra join-typer – byt helt enkelt ut join-funktionen mot semi_join().
semi_join(a_tibble, another_tibble, by = c("id_col1", "id_col2"))
Du kanske redan har noterat att resultatet av en semi-join och en anti-join tillsammans ger ursprungstabellen. Oavsett tabellinnehåll eller hur du kombinerar dem kommer semi_join(A, B) plus anti_join(A, B) alltid att returnera A – dock möjligen med raderna i en annan ordning.
Den här övningen är en del av kursen
Introduktion till Spark med sparklyr i R
Övningsinstruktioner
En Spark-anslutning har skapats åt dig som spark_conn. Tibbles kopplade till spårmetadata och artisttermer lagrade i Spark är fördefinierade som track_metadata_tbl respektive artist_terms_tbl.
- Använd en semi-join för att koppla artisttermerna till spårmetadata via kolumnen
artist_id. Tilldela resultatet tilljoined. - Använd
sdf_dim()för att ta reda på hur många rader och kolumner den sammanfogade tabellen innehåller.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# track_metadata_tbl and artist_terms_tbl have been pre-defined
track_metadata_tbl
artist_terms_tbl
# Semi join artist terms to track metadata by artist_id
joined <- ___
# How many rows and columns are in the joined table?
___