Мне нужно написать структурированный запрос, который находит наиболее распространенные непустые PREFIX (вхождения) для UNIQUE_GUEST_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] |
+---------------+-------------+