如何基于来自其他pyspark数据帧的日期值过滤第二个pyspark数据帧?

如何基于来自其他pyspark数据帧的日期值过滤第二个pyspark数据帧?,pyspark,pyspark-dataframes,Pyspark,Pyspark Dataframes,我有一个数据框,其中填充了load\u date\u time。我想用其他数据帧中的max(date_值)来过滤这个数据帧 我试着做了以下几点 df2_max_create_date = df2.select("create_date").agg(F.max(df_dsa["create_date"])) df2_max_create_date.show() +----------------+ |max(create_date)| +----------------+ | 2019-

我有一个数据框,其中填充了load\u date\u time。我想用其他数据帧中的max(date_值)来过滤这个数据帧

我试着做了以下几点

df2_max_create_date = df2.select("create_date").agg(F.max(df_dsa["create_date"]))
df2_max_create_date.show()
+----------------+
|max(create_date)|
+----------------+
|      2019-11-10|
+----------------+
然后尝试基于此日期筛选第一个数据帧。它有一个名为load\u date\u time的时间戳列

df_delta = df1.where(F.col('load_date_time') > (F.lit(df2_max_create_date)))
但我的错误率越来越低

AttributeError: 'DataFrame' object has no attribute '_get_object_id'

您可以通过调用
collect
获取
max\u date
变量:

max_create_date = df2.select(F.max(df_dsa["create_date"])).collect()[0][0]
df_delta = df1.where(F.col('load_date_time') > max_create_date)

只需使用
连接
df_delta=df1.alias(“l”).crossJoin(df2_max_create_date)。where(F.col(“load_date_time”)>F.col(“max(create_date)”)。select(“l.*)
。效果很好。仅供参考:使用
连接
几乎总是比
收集
更受欢迎!我也明白为什么。为什么在collect()上使用交叉连接是经济高效的?@anidev711 collect是一种操作,而连接是一种转换。阅读此问答