在sparksql中动态地将列传递给when-otherwise函数

kzipqqlq  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(456)

嗨,我正在使用withcolumn with,否则将更新列值

val df2 = df.withColumn("col_1", when(col("col_1") > col("col_2"),col("col_2")).otherwise(col("col_1")))

但我的要求是使这个语句通用化,以便有人可以像 "col(\"col_1\") > col(\"col_2\")" 当这个字符串可以有逻辑运算符时,它可以传递给函数,比如 && , || 它们是将字符串表达式传递到列的方法吗?或者它们是动态传递这些值的另一种方式?
谢谢

bakd9h0s

bakd9h0s1#

也许这有帮助- you can pass filter variable directly as below ```
val filter = "col_1>col_2"
val df2 = df.withColumn("col_1", expr(s"case when ($filter) then col_2 else col_1 end")

相关问题