在聚合期间获取Dataframe上的第一个非空值spark scala

t30tvxxf  于 2021-07-14  发布在  Java
关注(0)|答案(1)|浏览(383)

在聚合group by期间,当前我取第一个值。但是我需要visit\u id列的第一个not null值。请让我知道,如果有任何方法在斯卡拉Spark。

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

提前谢谢。

egdjgwm8

egdjgwm81#

你可以用 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|
+---+--------+

相关问题