半连接(semi join)
半连接与反连接相反,可以理解为"反连接的反面"。
半连接会返回第一个表中在第二个表里"能找到匹配"的那些行。下图展示了这一原理。

其语法与其他连接类型相同;只需将其他连接函数替换为 semi_join()。
semi_join(a_tibble, another_tibble, by = c("id_col1", "id_col2"))
您可能已经注意到,半连接的结果加上反连接的结果会还原为原始表。因此,无论表的内容如何、以及您如何连接它们,semi_join(A, B) 与 anti_join(A, B) 的并集都会得到 A(不过行的顺序可能不同)。
本练习是课程的一部分
R 中使用 sparklyr 的 Spark 入门
练习说明
系统已为您创建 Spark 连接 spark_conn。保存在 Spark 中的曲目信息与艺人标签分别已作为 tibble 预定义为 track_metadata_tbl 与 artist_terms_tbl。
- 使用半连接按
artist_id列将艺人标签与曲目信息连接,并将结果赋值给joined。 - 使用
sdf_dim()查看连接结果表的行数与列数。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# 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?
___