2016-10-24 3 views
3

Я хотел бы добавить, где условие для столбца с несколькими значениями в DataFrame.Spark SQL - IN item

Его работа для одного значения, например.

df.where($"type".==="type1" && $"status"==="completed"). 

Как добавить несколько значений для одного столбца, как показано ниже.

df.where($"type" IN ("type1","type2") && $"status" IN ("completed","inprogress") 

ответ

7

метод, который вы ищете 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:_*)) 
+0

спасибо .. его рабочий .. – Shankar

+0

Как может Я строю несколько значений динамически? Я попробовал StringBuilder, чтобы он не работал, может быть, он приходит как одна строка, если я даю значения, разделенные '' 'его работой. – Shankar

+0

По какой причине вы используете 'Seq', вместо' Array' или 'List'? Благодаря! – akmal