У меня есть следующий DataFrame df
:
url user date followers
www.test1.com A 2017-01-04 05:46:00 45
www.test1.com B 2017-01-03 10:46:00 10
www.test1.com C 2017-01-05 05:46:00 11
www.test2.com B 2017-01-03 17:00:00 10
www.test2.com A 2017-01-04 15:05:00 45
Для каждого отдельного url
мне нужно найти общую сумму followers
, user
, который имеет самое раннее date
, количество уникальных user
значений, самое раннее date
и последний date
.
Вот что я сделал до сих пор:
val wFirstUser = Window.partitionBy($"url",$"user").orderBy($"date".asc)
val result = df
.groupBy("url")
.agg(sum("followers")", countDistinct("user"), min("date"), max("date"))
.withColumn("rn", row_number.over(wFirstUser)).where($"rn" === 1).drop("rn")
Ожидаемый результат:
url first_user earliest_date latest_date sum_followers distinct_users
www.test1.com B 2017-01-03 10:46:00 2017-01-05 05:46:00 66 3
www.test2.com B 2017-01-04 15:05:00. 2017-01-03 17:00:00 55 2
Но я не могу найти user
, у которого есть самый ранний date
(т.е. first_user
). Может кто-нибудь, пожалуйста, помогите мне?