2016-09-02 2 views
0

У меня есть таблица с идентификатором значения и значениемSparkSQL GroupBy с условием

| id | value | 
----------------- 
| 1 | UnKnown | 
| 1 |  A | 
| 2 | UnKnown | 
| 2 | UnKnown | 
| 3 |  B | 
| 3 |  B | 
| 3 |  B | 

нужно выбрать отличный идентификатор и соответствующее значение из таблицы. При выборе Идентификатор должен быть уникальным, и если он имеет несколько значений в поле значений, он должен получать только не неизвестные значения

Таким образом, результат должен быть следующим.

| id | value |  
----------------- 
| 1 |  A | 
| 2 | UnKnown | 
| 3 |  B | 

Как достичь группы, с условием, как значения «Неизвестные», то держать «Неизвестные» еще значение в SQL или Спарк Scala?

ответ

0

Ниже приведен пример с использованием Scala и Spark 2.0.0 SQL. Вы можете попробовать это на искровой оболочке.

val v = Seq((1,"Unknown"),(1,"A"),(2,"Unknown"),(2,"Unknown"),(3,"B"),(3,"B"),(3,"B")).toDF("id","value") 
v.show 
v.createOrReplaceTempView("v1") 
spark.sql("select * from v1 where value!='Unknown' union (select * from v1 a where (select count (*) from v1 b where a.id=b.id and b.value!='Unknown')<1)").show 
Смежные вопросы