Spark-SQL 中需要一个 TRUE 和 FALSE 列

Nat*_*eld 5 apache-spark-sql

我正在尝试为 Spark SQL DataFrame 编写多值过滤器。

我有:

val df: DataFrame      // my data
val field: String      // The field of interest
val values: Array[Any] // The allowed possible values
Run Code Online (Sandbox Code Playgroud)

我正在尝试提出过滤器规范。

目前,我有:

val filter = values.map(value => df(field) === value)).reduce(_ || _)
Run Code Online (Sandbox Code Playgroud)

但这在我传递空值列表的情况下并不可靠。为了涵盖这种情况,我想:

val filter = values.map(value => df(field) === value)).fold(falseColumn)(_ || _)
Run Code Online (Sandbox Code Playgroud)

但我不知道如何指定 falseColumn。

有谁知道怎么做?

有没有更好的方法来编写这个过滤器?(如果是这样,我仍然需要有关如何获得 falseColumn 的答案 - 我需要一个 trueColumn 作为单独的部分)。

soc*_*880 6

永远正确的一列:

val trueColumn = lit(true)
Run Code Online (Sandbox Code Playgroud)

始终为 false 的列:

val falseColumn = lit(false)
Run Code Online (Sandbox Code Playgroud)

使用lit(...)意味着这些列始终是有效的列,无论 DataFrame 包含哪些列。