Semi join
Semi join คือสิ่งที่ตรงข้ามกับ anti join กล่าวคือ มันคือ "anti-anti join" นั่นเอง
Semi join จะคืนค่าแถวจากตารางแรกที่ พบ คู่ที่ตรงกันในตารางที่สอง หลักการนี้แสดงไว้ในแผนภาพด้านล่าง

ซินแท็กซ์เหมือนกับการ join ประเภทอื่น เพียงแค่เปลี่ยนฟังก์ชัน join มาใช้ semi_join() แทน
semi_join(a_tibble, another_tibble, by = c("id_col1", "id_col2"))
สังเกตได้ว่าผลลัพธ์ของ semi join รวมกับผลลัพธ์ของ anti join จะได้ตารางต้นฉบับกลับมา ดังนั้นไม่ว่าข้อมูลในตารางจะเป็นอย่างไร หรือจะ join ในรูปแบบใด semi_join(A, B) บวกกับ anti_join(A, B) จะให้ผลลัพธ์เป็น A เสมอ (แม้ลำดับแถวอาจต่างกัน)
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
แนะนำ Spark ด้วย sparklyr ใน R
คำแนะนำการฝึกหัด
Spark connection ได้ถูกสร้างไว้ให้แล้วในชื่อ spark_conn และ Tibble ที่เชื่อมต่อกับข้อมูล track metadata และ artist terms ใน Spark ได้ถูกกำหนดไว้ล่วงหน้าเป็น track_metadata_tbl และ artist_terms_tbl ตามลำดับ
- ใช้ semi join เพื่อเชื่อม artist terms เข้ากับ track metadata โดยใช้คอลัมน์
artist_idแล้วกำหนดผลลัพธ์ให้กับตัวแปรjoined - ใช้
sdf_dim()เพื่อตรวจสอบจำนวนแถวและคอลัมน์ในตารางที่ได้จากการ join
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# 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?
___