Aan de slagBegin gratis

Left joins

Naast het bewerken van losse data frames kun je met sparklyr ook twee data frames aan elkaar koppelen. Een volledige uitleg van het joinen van tabellen met dplyr-syntax vind je in de cursus Joining Data with dplyr. In de rest van dit hoofdstuk zie je voorbeelden van hoe je dit met Spark doet.

Een left join neemt alle waarden uit de eerste tabel en zoekt naar overeenkomsten in de tweede tabel. Als er een match is, voegt hij de gegevens uit de tweede tabel toe; zo niet, dan worden missende waarden toegevoegd. Het principe zie je in dit diagram.

A left join, explained using table of colors.

Left joins zijn een type mutating join, omdat ze simpelweg kolommen toevoegen aan de eerste tabel. Om met sparklyr een left join uit te voeren, roep je left_join() aan met twee tibbles en een tekenvector met de kolommen waarop je joint.

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

Als je deze join in woorden beschrijft, worden de tabelnamen omgedraaid. Deze join zou je schrijven als: "another_tibble wordt left gejoint aan a_tibble".

In deze oefening maak je kennis met een andere Spark DataFrame met termen die elke artiest beschrijven. Deze lopen uiteen van algemene termen zoals "pop" tot meer nichegenres zoals "swiss hip hop" en "mathgrindcore".

Deze oefening maakt deel uit van de cursus

Introductie tot Spark met sparklyr in R

Bekijk cursus

Oefeninstructies

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

  • Gebruik een left join om de artiesttermen te joinen met de trackmetadata op de kolom artist_id.
    • De tabel waartegen je joint, track_metadata_tbl, komt eerst.
    • De tabel die aan de eerste wordt gejoint, artist_terms_tbl, komt daarna.
    • Ken het resultaat toe aan joined.
  • Gebruik sdf_dim() om te bepalen hoeveel rijen en kolommen de gejointe 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

# Left join artist terms to track metadata by artist_id
joined <- ___(___, ___, by = ___)

# How many rows and columns are in the joined table?
___
Code bewerken en uitvoeren