如何在 spark-sql 中的 where 子句中使用列表



我有以下格式的数据:

df
uid String event
a   djsan  C
a   fbja   V
a   kakal  Conversion
b   jshaj  V
b   jjsop  C
c   dqjka  V
c   kjkk   Conversion

我需要提取事件为转换的用户的所有行,因此预期结果应该是:

uid String event
a   djsan  C
a   fbja   V
a   kakal  Conversion
c   dqjka  V
c   kjkk   Conversion

我正在尝试使用spark-sql进行相同的操作。我试图使用表单的简单子查询

Select * from df where uid in (Select uid from df where event = 'Conversion')

但这给了我一个例外。

我还想看看我是否有 uid 的列表对象,我可以在 SQL 语句中使用它吗,如果是,如何?

list : List[String] = List('a','c')

Spark 尚不支持您编写的子查询语法。下面介绍了如何使用列表形成查询:

val list = List("a","b")
val query = s"select * from df where uid in (${list.map ( x => "'" + x + "'").mkString(",") })"

并使用它来选择所需的行。

相关内容

  • 没有找到相关文章

最新更新