gpt4 book ai didi

apache-spark-sql - 如何使用scala在spark sql中使用when条件编写案例

转载 作者:行者123 更新时间:2023-12-03 13:41:59 25 4
gpt4 key购买 nike

SELECT c.PROCESS_ID, 
CASE WHEN c.PAYMODE = 'M'
THEN
CASE WHEN CURRENCY = 'USD'
THEN c.PREMIUM * c.RATE
ELSE c.PREMIUM END * 12
ELSE
CASE WHEN CURRENCY = 'USD'
THEN c.PREMIUM * c.RATE
ELSE c.PREMIUM END END VAlue
FROM CMM c


我想转换SQL查询Spark SQL API我该怎么办?

谢谢

最佳答案

如果您正在寻找使用Column对象执行此操作的方法,则可以执行如下文字转换:

val df: DataFrame = ...

df.select(
col("PROCESS_ID"),
when(col("PAYMODE") === lit("M"),
(when(col("CURRENCY") === lit("USD"), col("PREMIUM") * col("RATE"))
.otherwise(col("PREMIUM"))) * 12
).otherwise(
when(col("CURRENCY") === lit("USD"), col("PREMIUM") * col("RATE"))
.otherwise(col("PREMIUM"))
)
)


但是,可能更干净的方法是执行以下操作:

df.withColumn(
"result",
when(col("CURRENCY") === lit("USD"), col("PREMIUM") * col("RATE"))
.otherwise(col("PREMIUM"))
).withColumn(
"result",
when(col("PAYMODE") === lit("M"), col("result") * 12)
.otherwise(col("result"))
)


至少,第二本对我来说更容易理解。

关于apache-spark-sql - 如何使用scala在spark sql中使用when条件编写案例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37064315/

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