Ответ 1
Если вы ищете способ сделать это с помощью объектов 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"))
)
По крайней мере, мне гораздо легче читать вторую.