You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于分组实现PySpark DataFrame关联,补全每个订单对应全量地址的订单占比

解决方案

实现思路

  • 首先从订单表df中提取所有订单的唯一属性组合(c_id、order_id、order_date),每个订单对应唯一一条记录
  • 将上述订单属性表和地址表df_address通过c_id内连接,得到每个订单对应用户的全部地址组合,这一步解决了普通连接无法补全同一用户所有地址的问题
  • 将得到的全量订单地址组合,和原订单表df通过c_id、a_id、order_id、order_date四个字段左连接,匹配已有的order_share值
  • 最后将order_share字段的空值填充为0.0即可得到预期结果

PySpark 实现代码

# 1. 提取订单唯一维度信息
order_dim = df.select("c_id", "order_id", "order_date").distinct()

# 2. 关联地址表得到每个订单对应的全量用户地址
order_address_full = order_dim.join(df_address, on="c_id", how="inner")

# 3. 左关联原订单表获取order_share,空值填充为0.0
result = order_address_full.join(
    df,
    on=["c_id", "a_id", "order_id", "order_date"],
    how="left"
).fillna({"order_share": 0.0})

# 可选:按order_id、a_id排序,和样例输出顺序一致
result = result.sort("order_id", "a_id")

# 查看结果
result.show()

内容的提问来源于stack exchange,提问作者Jitesh Malipeddi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 11:57:02