PySpark如何基于最新order_date记录实现两个DataFrame关联
PySpark 实现按id取最新记录后关联DataFrame
实现逻辑
- 先对df1使用窗口函数标记每个id下的记录时序,筛选出每个id对应order_date最新的一条记录
- 用处理后的df1和df0基于id字段关联得到结果
代码实现
from pyspark.sql.window import Window import pyspark.sql.functions as F # 1. 定义窗口规则:按id分组,order_date降序排列 window_spec = Window.partitionBy("id").orderBy(F.desc("order_date")) # 2. 筛选df1中每个id的最新记录 df1_latest = df1.withColumn("row_num", F.row_number().over(window_spec)) \ .filter(F.col("row_num") == 1) \ .drop("row_num") # 3. 两个DataFrame关联得到最终结果 final_df = df0.join(df1_latest, on="id", how="inner") # 打印验证结果 final_df.show()
补充说明
如果需要保留df0中存在但df1中不存在的id,可将关联参数how="inner"调整为how="left"即可。
内容的提问来源于stack exchange,提问作者Alejandro
相关产品推荐
相关产品推荐

