在多个条件下连接两个Dataframepyspark

pqwbnv8z  于 2021-07-09  发布在  Spark
关注(0)|答案(1)|浏览(287)

我有两个表,第一个是测试表,第二个是实际测试表。我想以这样一种方式连接2df,结果表应该有“noshows”列。此列描述了该人员在该日期预约,但实际上在测试日期没有出现在测试中。示例-

testAppointment Table

个人测试日期X2021-02-12y2021-03-18x2020-11-01z2020-09-10y2021-01-08z2020-12-24

Test Table

拟人日期2021-02-12y2021-03-18x2020-11-01z2020-09-10
由于y(2021-01-08)和z(2020-12-24)没有在两个日期参加考试,因此考试表中没有他们的条目。因此,我希望在连接两个表之后,在它们各自的行中不显示它们。

cu6pst1q

cu6pst1q1#

您可以根据 ActualtestDate 为空:

result = testappointment.join(
    test, 
    (testappointment.testDate == test.ActualtestDate) & (testappointment.personId == test.personId), 
    'left'
).select(
    testappointment.personId, 
    testappointment.testDate, 
    test.ActualtestDate.isNull().alias('noshow')
)

result.show()
+--------+----------+------+
|personId|  testDate|noshow|
+--------+----------+------+
|       x|2021-02-12| false|
|       y|2021-03-18| false|
|       x|2020-11-01| false|
|       z|2020-09-10| false|
|       y|2021-01-08|  true|
|       z|2020-12-24|  true|
+--------+----------+------+

相关问题