【发布时间】:2021-02-23 16:52:15
【问题描述】:
我有如下三个数据框。
df_prod
Year ID Name brand Point
2020 20903 Ken KKK 2000
2019 12890 Matt MMM 209
2017 346780 Nene NNN 2000
2020 346780 Nene NNN 6000
df_miss
Name brand point
Holy HHH 345
Joshi JJJ 900
df_sale
ID Name Year brand
126789 Holy 2010
346780 Nene 2017 NNN
346780 Nene 2020 NNN
我需要根据以下条件加入 df_sale。 如果“品牌”不为空,那么我需要在 INNER 上加入 df_sale 和 df_prod,加入年份和名称。 如果 "brand" 为 NULL,那么我需要根据 Name 加入 df_sale 和 df_miss。
在 pyspark 中加入时是否可以有条件?我可以在 scala 上看到一些示例,但我正在寻找 pyspark 实现。
伪代码逻辑
if brand != null
df_sale.join(df_prod, on=['Year', 'ID'], how='inner') and df_sale['Name'] = df_prod['Name'] & df_sale['point'] = df_prod['point']
elif brand == null
df_sale.join(df_miss, on=['Name'], how='nner') and
df_sale['point'] = df_prod['point']
预期输出:
ID Name Year brand point
126789 Holy 2010 345
346780 Nene 2017 NNN 2000
346780 Nene 2020 NNN 2000
是否可以在 pyspark 或 SQL 中进行。请指点一下。谢谢。
【问题讨论】: