我有以下格式的数据:
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(",") })"
并使用它来选择所需的行。