Предположим, у меня есть следующий фрейм данных, созданный pyspark
id date deleted
1 2019-02-07 true
1 2019-02-04 false
2 2019-02-01 true
3 2019-02-08 false
3 2019-02-06 true
Я хотел бы переиндексировать эту таблицу ежедневно с самой ранней даты до настоящего времени (скажем, 2019-02-09), и самой раннейдата основана на каждом идентификаторе, например, для идентификатора 1 самая ранняя дата - 2019-02-04, для идентификатора 3 - самая ранняя дата - 2019-02-06.И ожидаемый результат:
id date deleted
1 2019-02-04 false
1 2019-02-05 null
1 2019-02-06 null
1 2019-02-07 true
1 2019-02-08 null
1 2019-02-09 null
2 2019-02-01 true
2 2019-02-02 null
...
2 2019-02-09 null
3 2019-02-06 true
3 2019-02-07 null
3 2019-02-08 false
3 2019-02-09 null
Я знал, как это сделать для самой ранней даты, основанной на всех идентификаторах (т. Е. 2019-02-01), затем просто построить фрейм данных, содержащий все даты с 2019 г.От -02-01 до 2019-02-09 для каждого идентификатора (перекрестное соединение), затем левое присоединение к исходному фрейму данных.Проблема этого подхода заключается в том, что если существует дата, скажем, 1980-01-01, то переиндекс будет заполнять все данные с 1980-01-01 до настоящего времени для всех идентификаторов, что не имеет смысла, и будет влиять на производительность дляследующий ETL в этом фрейме данных.
Для самой ранней даты, основанной на каждом разделе, не удалось найти хороший способ сделать это.