Kom igångKom igång gratis

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.

A semi join, explained using table of colors.

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

Visa kurs

Ö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 till joined.
  • 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?
___
Redigera och kör kod