Złączenia lewostronne
sparklyr nie tylko umożliwia przekształcanie pojedynczych ramek danych, ale pozwala też łączyć dwie ramki danych ze sobą. Szczegółowe omówienie łączenia tabel za pomocą składni dplyr znajdziesz w kursie Joining Data with dplyr. W pozostałej części tego rozdziału zobaczysz kilka przykładów, jak robić to w Sparku.
Złączenie lewostronne (left join) pobiera wszystkie wartości z pierwszej tabeli i szuka dopasowań w drugiej tabeli. Gdy znajdzie dopasowanie, dodaje dane z drugiej tabeli; gdy nie znajdzie – wstawia brakujące wartości. Zasadę działania ilustruje poniższy diagram.

Złączenia lewostronne należą do kategorii złączeń mutujących (mutating joins), ponieważ po prostu dodają kolumny do pierwszej tabeli. Aby wykonać złączenie lewostronne w sparklyr, wywołaj left_join(), przekazując dwa tibble'e oraz wektor znakowy kolumn, po których ma nastąpić złączenie.
left_join(a_tibble, another_tibble, by = c("id_col1", "id_col2"))
Opisując to złączenie słowami, nazwy tabel podaje się w odwrotnej kolejności. Powyższe złączenie opisujemy jako: „another_tibble jest złączony lewostronnie do a_tibble".
To ćwiczenie wprowadza kolejną ramkę danych Sparka zawierającą terminy opisujące poszczególnych artystów. Obejmują one zarówno ogólne etykiety, jak „pop", jak i bardziej niszowe gatunki, takie jak „swiss hip hop" czy „mathgrindcore".
To ćwiczenie jest częścią kursu
Wprowadzenie do Spark z pakietem sparklyr w R
Instrukcje do ćwiczenia
Połączenie ze Sparkiem zostało już utworzone jako spark_conn. Tibble'e powiązane z metadanymi utworów i terminami artystów przechowywanymi w Sparku zostały wstępnie zdefiniowane jako track_metadata_tbl i artist_terms_tbl.
- Użyj złączenia lewostronnego, aby połączyć terminy artystów z metadanymi utworów po kolumnie
artist_id.- Tabela, do której dołączamy,
track_metadata_tbl, jest pierwszym argumentem. - Tabela dołączana,
artist_terms_tbl, jest kolejnym argumentem. - Przypisz wynik do zmiennej
joined.
- Tabela, do której dołączamy,
- Użyj
sdf_dim(), aby sprawdzić, ile wierszy i kolumn zawiera połączona tabela.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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?
___