CaseWhen in spark DataFrame



我想了解如何使用新的DataFrame api的CaseWhen表达式。

我在文档中看不到任何引用,我唯一看到它的地方是在代码中:https://github.com/apache/spark/blob/v1.4.0/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/predicates.scala L397

我希望能够写这样的东西:

val col = CaseWhen(Seq(
    $"a" === lit(1), lit(10),
    $"a" === lit(2), lit(15),
    ...
    lit(20)
))

但是这段代码无法编译,因为SeqColumn类型而不是Expression类型

如何正确使用CaseWhen ?

说实话,我不知道CaseWhen是否打算用作面向用户的API。相反,您应该使用Column类型的whenotherwise方法。使用这些方法,您可以构造一个CaseWhen列。

val column: Column = //some column
val result: Column = column.
  when($"a" === functions.lit(1), 10).
  when($"a" === functions.lit(2), 15).
  otherwise(20)

相关内容

  • 没有找到相关文章

最新更新