1

我想了解如何将CaseWhen表达式与新的DataFrameapi 一起使用。

我在文档中看不到对它的任何引用,我看到它的唯一地方是在代码中: 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)
))

但是这段代码不会编译,因为它Seq是类型Column而不是Expression

正确的使用方法是CaseWhen什么?

4

1 回答 1

4

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

val column: Column = //some column

val result: Column = column.
  when($"a" === functions.lit(1), 10).
  when($"a" === functions.lit(2), 15).
  otherwise(20)
于 2015-07-27T14:40:39.527 回答