【发布时间】:2020-09-08 17:49:31
【问题描述】:
我有一个包含以下架构的表:
Table1
+------------------+--------------------+-------------------+-------------+-------------+
|student_id|project_id|name|project_name|approved|evaluation_type|grade| cohort_number|
我有另一张桌子,上面有以下内容:
Table2
+-------------+----------+
|cohort_number|project_id|
我的问题是:我想为每个 student_id 获取他尚未完成的项目(无行)。我知道他应该做的所有项目的方法是检查cohort_number。基本上我需要两张表之间的“差异”。我想通过与表 2 project_id 的队列编号进行比较,用缺失的条目填充表 1。
我不确定我是否清楚。 我尝试使用 LEFT JOIN,但我只得到匹配的记录。 (我需要相反的)
例子:
Table1
|student_id|project_id|name| project_name| approved|evaluation_type| grade|cohort_number|
+----------+----------+--------------------+------+--------------------+--------+---------------+------------------
| 13| 18|Name| project/sd-03-bloc...| true| standard| 1.0| 3|
| 13| 7|Name| project/sd-03-bloc...| true| standard| 1.0| 3|
| 13| 27|Name| project/sd-03-bloc...| true| standard| 1.0| 3|
表2
+-------------+----------+
|cohort_number|project_id|
+-------------+----------+
| 3| 18|
| 3| 27|
| 4| 15|
| 3| 7|
| 3| 35|
我想要:
|student_id|project_id|name| project_name| approved|evaluation_type| grade|cohort_number|
+----------+----------+--------------------+------+--------------------+--------+---------------+------------------
| 13| 18|Name| project/sd-03-bloc...| true| standard| 1.0| 3|
| 13| 7|Name| project/sd-03-bloc...| true| standard| 1.0| 3|
| 13| 27|Name| project/sd-03-bloc...| true| standard| 1.0| 3|
| 13| 35|Name| project/sd-03-bloc...| false| standard| 0| 3|
提前致谢
【问题讨论】:
-
请提供样本数据和所需结果以阐明您的要求。
-
添加了示例。谢谢
-
那么,对于
table1中的给定学生,name、project_name、evaluation_type和cohort_number的列总是相同的? -
姓名和群组编号是的。但 project_name 和 evaluation_type 没有。更清楚地说,project_name 来自表 2,但为简化起见,我删除了
标签: sql dataframe join pyspark apache-spark-sql