首先,我有以下数据,A和B。下面是我试图输出下面是的结果。
为了总结这个目标,我希望创建一个最终的dataframe:
有什么建议吗?另外,如果有一种通过SQL查询来执行此操作的方法,那么这也是可行的。
发布于 2022-09-21 16:29:39
建议。这可能是更好的方法,但这应该有效。您需要对所有要对其执行此操作的列执行此操作。
a_df = spark.table('table_a').select(PK, x2, col('Original').alias('A')) #dataframe a
b_df = spark.table('table_b').select(PK, col('Original').alias('B')) #dataframe b
joined_df = a_df.join(b_df, a_df.PK == b_df.PK, 'left') #join a on b
result_df = joined_df.withColumn('Original' ,
when((col('A').isNull() & col('B').isNotNull()), col('B'))\
.when((col('A').isNotNull() & col('B').isNull()), col('A')).otherwise(col('B')))
#If A is Null & B is not Null, then B
#If A is not Null & B is Null, then A
#Otherwise (if both are Null, both are not null) then B
https://stackoverflow.com/questions/73801691
复制相似问题