Я использую в своем проекте spark- sql -2.4.1v.
Чтобы получить уникальные компании для заданного временного диапазона, я использую функцию окна искры с рангом. Но на ту же дату для одного и того же идентификатора компании он ранжирует две записи как первую запись.
Я использую приведенный ниже фрагмент кода, чтобы найти уникальные записи, т. Е. Ранг-1.
val ws = Window.partitionBy("company_id").orderBy(desc("created_date"))
val rankDs = sourceDs.withColumn("rank",rank().over(ws))
.where($"rank".===(lit(1)))
.select("*")
Результаты, которые он показывает:
+-------------+-----------+----+
| created_date| company_id|rank|
+-------------+-----------+----+
| 2018-02-01| 17869354| 1|
| 2018-02-01| 17869354| 1|
| 2018-02-01| 41248792| 1|
| 2018-02-01| 41248792| 1|
| 2018-02-01| 86947653| 1|
| 2018-02-01| 86947653| 1|
--------------------------------
Как показано выше, он дает повторяющиеся записи для нескольких исходных записей, так что здесь не так, как это исправить т.е. давать только записи ранга 1 без дубликатов?
Ожидаемый результат:
+-------------+-----------+----+
| created_date| company_id|rank|
+-------------+-----------+----+
| 2018-02-01| 17869354| 1|
| 2018-02-01| 41248792| 1|
| 2018-02-01| 86947653| 1|
--------------------------------