我有以下格式的数据:
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')
答案 0 :(得分:2)
你还没有支持你所写的子查询语法。以下是使用列表构建查询的方法:
val list = List("a","b")
val query = s"select * from df where uid in (${list.map ( x => "'" + x + "'").mkString(",") })"
并使用它来选择所需的行。