Сначала подытожим количество кликов. Затем рассчитайте процент и, наконец, отфильтруйте для всех строк больше 50%:
val df = Seq(("A", 1), ("A", 1), ("B", 0), ("B", 0), ("C", 1), ("C", 0),
("D", 1), ("D", 0), ("E", 0), ("E", 0))
.toDF("Users", "clicks")
val allĆlicks = df.filter("Clicks > 0").count
df.groupBy("Users").sum()
.withColumn("percents", $"sum(clicks)"/allĆlicks*100)
.filter("percents >= 50")
.show()
отпечатков:
+-----+-----------+--------+
|Users|sum(clicks)|percents|
+-----+-----------+--------+
| A| 2| 50.0|
+-----+-----------+--------+