Spark SQL - IN 子句
Posted
技术标签:
【中文标题】Spark SQL - IN 子句【英文标题】:Spark SQL - IN clause 【发布时间】:2016-10-24 12:28:58 【问题描述】:我想为 DataFrame 中具有多个值的列添加 where 条件。
例如,它适用于单个值。
df.where($"type".==="type1" && $"status"==="completed").
如何为同一列添加多个值,如下所示。
df.where($"type" IN ("type1","type2") && $"status" IN ("completed","inprogress")
【问题讨论】:
【参考方案1】:你要找的方法是isin
:
import sqlContext.implicits._
df.where($"type".isin("type1","type2") and $"status".isin("completed","inprogress"))
通常,你想做这样的事情
val types = Seq("type1","type2")
val statuses = Seq("completed","inprogress")
df.where($"type".isin(types:_*) and $"status".isin(statuses:_*))
【讨论】:
如何动态构建多个值?我尝试 StringBuilder 构建它不起作用,可能是它作为单个字符串出现,如果我给出由,
分隔的值它的工作。
您使用Seq
而不是Array
或List
的原因是什么?谢谢!
@akmal Seq
比 List
更通用。 Array
不是 scala 集合 API 的一部分,所以除非我有充分的理由,否则我不会使用它。
什么是 IN 是有一个数据框列来检查值?如何处理?以上是关于Spark SQL - IN 子句的主要内容,如果未能解决你的问题,请参考以下文章
Databricks getArgument 值不能在 Spark SQL IN 子句中使用
Spark SQL 中的 where 子句与 join 子句
使用 Spark 执行“WHERE IN”子句,如何仅重新训练第一个数据集的列?
哪个更快? Spark SQL with Where 子句或在 Spark SQL 之后在 Dataframe 中使用过滤器