如何像条件分区一样在sql上加入两个Pyspark DataFrame? 我实际上需要连接两个数据帧,以便对于每个组(基于列变量),我都与其他表进行外部连接。
例如,我有以下两个数据帧:
df1:
df2:
所需的输出类似于:
我尝试使用Pyspark的Window
运算符,但不能使用,因为它不能用于通过窗口的联接。
任何帮助将不胜感激。
答案 0 :(得分:0)
我更愿意说,根据您的输出期望,存在任何一种缺少连接的逻辑。
但是,请查看与您的期望密切相关的cross join,
。
>>> df_1.crossJoin(df_2).withColumn("match", when((df_1.batch==df_2.batch) & (df_1.subject==df_2.subject) , "Yes").otherwise("No")).show()
+-------+-----+---------+-----+---------+-----+
|exam_id|batch| subject|batch| subject|match|
+-------+-----+---------+-----+---------+-----+
| 1| X1| maths| X1| maths| Yes|
| 1| X1| maths| X1| english| No|
| 1| X1| maths| X1|chemistry| No|
| 1| X1| english| X1| maths| No|
| 1| X1| english| X1| english| Yes|
| 1| X1| english| X1|chemistry| No|
| 2| X1|chemistry| X1| maths| No|
| 2| X1|chemistry| X1| english| No|
| 2| X1|chemistry| X1|chemistry| Yes|
+-------+-----+---------+-----+---------+-----+