2017-01-05 6 views
1

私は、次の形式のデータを持っている:内のリストを使用する方法どこスパーク-SQLの句

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 

私はそう期待される結果がすべき、イベント変換され、ユーザのすべての行を抽出する必要がありますbe:

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

私は同じもののためにスパークを使用しようとしています。私は単純なサブクエリを使用しようとしました

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

これは私に例外を与えています。

また、私はuidのリストオブジェクトを持っているかどうかを知りたかったのですが、SQL文でそのオブジェクトを使用できますか?

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

何が例外ですか? – mrsrinivas

+0

@mrsrinivas @mrsrinivas org.apache.spark.sql.AnalysisException:クエリでサポートされていない言語機能:select * from df where userid in(dfからのユーザーIDの選択:event = 'Conversion') – hbabbar

+0

スパークのバージョンは何ですか? – mrsrinivas

答えて

2

あなたが作成したサブクエリ構文は、まだサポートされていません。リストを使用してクエリを作成する方法は次のとおりです。

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

これを使用して、目的の行を選択します。

+0

あなたの文のサブクラスの構文はsparkでサポートされていませんまだ? – Afaq

関連する問題