我正在学习编写pyspark代码。我可以通过构建类似sql的 views
在上面使用 .createOrReplaceTempView()
得到我想要的结果。不过,我想学习如何通过直接在Dataframe上操作而不是创建 views
.
这是我的密码
df1.createOrReplaceTempView('left_table')
df2.createOrReplaceTempView('right_table')
spark.sql('''
select
l.*,
CASE WHEN r.id IS NULL THEN current_timestamp() ELSE r.timestamp END ts,
from
left_table l
left join
right_table r
on l.id = r.id
''').show()
用于匹配 id
我想要那个 timestamp
要从右表中获取的列。为了 id
这只在左表中可用,我想使用系统时间戳 current_timestamp()
对于最终列值。
如何通过直接对Dataframe进行操作来实现这一点 df1
以及 df2
而不是构建视图?
1条答案
按热度按时间rjee0c151#
可以执行左联接,然后将空时间戳与当前时间戳合并: