Aan de slagBegin gratis

Semi-joins

Semi-joins zijn het tegenovergestelde van anti-joins: eigenlijk een anti-anti-join.

Een semi-join geeft de rijen van de eerste tabel terug waarvoor het wél een overeenkomst kan vinden in de tweede tabel. Het principe zie je in dit diagram.

A semi join, explained using table of colors.

De syntax is hetzelfde als bij andere join-typen; vervang simpelweg de andere join-functie door semi_join()

semi_join(a_tibble, another_tibble, by = c("id_col1", "id_col2"))

Je hebt misschien gezien dat de resultaten van een semi-join plus de resultaten van een anti-join samen de originele tabel vormen. Dus, ongeacht de tabelinhoud of hoe je ze joinet, semi_join(A, B) plus anti_join(A, B) levert A op (misschien met de rijen in een andere volgorde).

Deze oefening maakt deel uit van de cursus

Introductie tot Spark met sparklyr in R

Bekijk cursus

Oefeninstructies

Er is een Spark-verbinding voor je aangemaakt als spark_conn. Tibbles die gekoppeld zijn aan de trackmetadata en artiesttermen die in Spark zijn opgeslagen, zijn vooraf gedefinieerd als respectievelijk track_metadata_tbl en artist_terms_tbl.

  • Gebruik een semi-join om de artiesttermen te joinen met de trackmetadata op de kolom artist_id. Wijs het resultaat toe aan joined.
  • Gebruik sdf_dim() om te bepalen hoeveel rijen en kolommen de samengevoegde tabel heeft.

Interactieve oefening met praktijkervaring

Probeer deze oefening door deze voorbeeldcode aan te vullen.

# 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?
___
Code bewerken en uitvoeren