Получите первое не нулевое значение искры scala на кадре данных во время агрегации - PullRequest
0 голосов
/ 20 февраля 2019

Во время агрегации по группам в настоящее время я принимаю первое значение.Но мне нужно первое ненулевое значение для столбца visit_id.Пожалуйста, дайте мне знать, если есть какой-либо подход в Spark Scala.

DF.groupBy("id").agg(lit(first(col("visit_id"))).alias("visit_id")

Заранее спасибо.

1 Ответ

0 голосов
/ 20 февраля 2019

Вы можете использовать параметр ignoreNulls в first:

Пример :

val df = Seq((1, Some(2)), (1, None), (2, None), (2, Some(3))).toDF("id", "visit_id")

df.show
+---+--------+
| id|visit_id|
+---+--------+
|  1|       2|
|  1|    null|
|  2|    null|
|  2|       3|
+---+--------+

df.groupBy("id").agg(first("visit_id", ignoreNulls=true).as("visit_id")).show
+---+--------+
| id|visit_id|
+---+--------+
|  1|       2|
|  2|       3|
+---+--------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...