เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

Left joins

นอกจากการจัดการ data frame เดี่ยวแล้ว sparklyr ยังรองรับการ join data frame สองชุดเข้าด้วยกันได้ด้วย สำหรับเนื้อหาเชิงลึกเกี่ยวกับการ join ตารางด้วย syntax ของ dplyr สามารถศึกษาเพิ่มเติมได้ในคอร์ส Joining Data with dplyr ส่วนในบทนี้จะได้เห็นตัวอย่างการทำงานดังกล่าวบน Spark

Left join จะดึงค่าทั้งหมดจากตารางแรก แล้วค้นหาค่าที่ตรงกันในตารางที่สอง หากพบค่าที่ตรงกันก็จะนำข้อมูลจากตารางที่สองมาเพิ่ม แต่ถ้าไม่พบก็จะใส่ค่า missing แทน หลักการนี้แสดงในภาพด้านล่าง

A left join, explained using table of colors.

Left join จัดเป็น mutating join ประเภทหนึ่ง เนื่องจากเป็นการเพิ่มคอลัมน์เข้าไปในตารางแรก ในการทำ left join ด้วย sparklyr ให้เรียกใช้ left_join() โดยส่ง tibble สองชุดและเวกเตอร์ของชื่อคอลัมน์ที่ใช้ join

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

เมื่ออธิบาย join นี้เป็นคำพูด ชื่อตารางจะสลับกัน โดย join นี้จะเขียนว่า "another_tibble ถูก left joined เข้ากับ a_tibble"

แบบฝึกหัดนี้แนะนำ Spark DataFrame อีกชุดหนึ่งที่เก็บคำศัพท์บรรยายศิลปินแต่ละคน ซึ่งครอบคลุมตั้งแต่คำทั่วไปอย่าง "pop" ไปจนถึงแนวเพลงเฉพาะกลุ่มอย่าง "swiss hip hop" และ "mathgrindcore"

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

แนะนำ Spark ด้วย sparklyr ใน R

ดูคอร์ส

คำแนะนำการฝึกหัด

ได้มีการสร้าง Spark connection ไว้ให้แล้วในชื่อ spark_conn และได้กำหนด tibble ที่เชื่อมต่อกับข้อมูล track metadata และ artist terms บน Spark ไว้ล่วงหน้าแล้วในชื่อ track_metadata_tbl และ artist_terms_tbl ตามลำดับ

  • ใช้ left join เพื่อรวม artist terms เข้ากับ track metadata โดยใช้คอลัมน์ artist_id
    • ตารางที่จะถูก join เข้า คือ track_metadata_tbl ให้ระบุเป็นอันดับแรก
    • ตารางที่ join เข้าไป คือ artist_terms_tbl ให้ระบุเป็นอันดับถัดไป
    • กำหนดผลลัพธ์ให้กับตัวแปร joined
  • ใช้ sdf_dim() เพื่อตรวจสอบจำนวนแถวและคอลัมน์ของตารางที่ได้จากการ join

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# 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?
___
แก้ไขและรันโค้ด