gpt4 book ai didi

scala - Spark/Scala - 从数据框中有条件地选择列

转载 作者:可可西里 更新时间:2023-11-01 15:27:12 28 4
gpt4 key购买 nike

我有两个配置单元表 AB 以及它们各自的数据帧 df_adf_b

A
+----+----- +-----------+
| id | name | mobile1 |
+----+----- +-----------+
| 1 | Matt | 123456798 |
+----+----- +-----------+
| 2 | John | 123456798 |
+----+----- +-----------+
| 3 | Lena | |
+----+----- +-----------+

B
+----+----- +-----------+
| id | name | mobile2 |
+----+----- +-----------+
| 3 | Lena | 123456798 |
+----+----- +-----------+

并想执行类似的操作

select A.name, nvl(nvl(A.mobile1, B.mobile2), 0) from A left outer join B on A.id = B.id

到目前为止我想出了

df_a.join(df_b, df_a("id") <=> df_b("id"), "left_outer").select(?)

我不知道如何像在 Hive 查询中那样有条件地选择 mobile1mobile20

有人可以帮我解决这个问题吗?我正在使用 Spark 1.5。

最佳答案

使用coalesce :

import org.apache.spark.sql.functions._
df_a.join(df_b, df_a("id") <=> df_b("id"), "left_outer").select(
coalesce(df_a("mobile1"), df_b("mobile2"), lit(0))
)

如果存在则使用 mobile1,如果不存在则使用 mobile2,如果不存在则使用 0

关于scala - Spark/Scala - 从数据框中有条件地选择列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42758723/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com