我需要编写一个结构化查询,在每个唯一的\u guest \u id中查找最常见的非空前缀(出现)。有输入数据:
val inputDf = Seq(
(1, "Mr"),
(1, "Mme"),
(1, "Mr"),
(1, null),
(1, null),
(1, null),
(2, "Mr"),
(3, null)).toDF("UNIQUE_GUEST_ID", "PREFIX")
println("Input:")
inputDf.show(false)
我的解决方案是:
inputDf
.groupBy($"UNIQUE_GUEST_ID")
.agg(collect_list($"PREFIX").alias("PREFIX"))
但这不是我需要的:期望:
+---------------+------+
|UNIQUE_GUEST_ID|PREFIX|
+---------------+------+
|1 |Mr |
|2 |Mr |
|3 |null |
+---------------+------+
实际值:
+---------------+-------------+
|UNIQUE_GUEST_ID|PREFIX |
+---------------+-------------+
|1 |[Mr, Mme, Mr]|
|3 |[] |
|2 |[Mr] |
+---------------+-------------+
2条答案
按热度按时间goucqfw61#
试试这个-
lqfhib0f2#
输出: