Left join
Bên cạnh thao tác với từng data frame riêng lẻ, sparklyr còn cho phép bạn kết hợp hai data frame lại với nhau. Khóa học Joining Data with dplyr cung cấp hướng dẫn đầy đủ về cách join bảng bằng cú pháp dplyr. Trong phần còn lại của chương này, bạn sẽ thấy một số ví dụ thực hiện việc này với Spark.
Left join lấy tất cả giá trị từ bảng thứ nhất và tìm các bản khớp trong bảng thứ hai. Nếu tìm thấy, nó sẽ thêm dữ liệu từ bảng thứ hai; nếu không, nó sẽ thêm giá trị thiếu (missing). Nguyên lý được minh họa trong sơ đồ sau.

Left join là một dạng mutating join, vì chúng chỉ thêm cột vào bảng thứ nhất. Để thực hiện left join với sparklyr, gọi left_join(), truyền vào hai tibble và một vector ký tự chứa các cột dùng để join.
left_join(a_tibble, another_tibble, by = c("id_col1", "id_col2"))
Khi mô tả phép join này bằng lời, tên bảng sẽ đảo ngược. Phép join này sẽ được viết là "another_tibble được left join vào a_tibble".
Bài tập này giới thiệu một Spark DataFrame khác chứa các thuật ngữ mô tả từng nghệ sĩ. Chúng trải dài từ các thuật ngữ khá chung như "pop" đến những thể loại ngách như "swiss hip hop" và "mathgrindcore".
Bài tập này là một phần của khóa học
Nhập môn Spark với sparklyr trong R
Hướng dẫn bài tập
Kết nối Spark đã được tạo sẵn là spark_conn. Các tibble gắn với siêu dữ liệu bản nhạc và thuật ngữ nghệ sĩ được lưu trong Spark đã được định nghĩa lần lượt là track_metadata_tbl và artist_terms_tbl.
- Dùng left join để join bảng thuật ngữ nghệ sĩ vào bảng siêu dữ liệu bản nhạc theo cột
artist_id.- Bảng được join vào,
track_metadata_tbl, đặt trước. - Bảng join vào bảng thứ nhất,
artist_terms_tbl, đặt sau. - Gán kết quả vào
joined.
- Bảng được join vào,
- Dùng
sdf_dim()để xác định có bao nhiêu hàng và cột trong bảng đã join.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# 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?
___