Используя pandas и sqlalchemy, я получаю кадр данных, аналогичный приведенному ниже, где START_DTTM и END_DTTM представляют время, когда запись вошла / вышла из состояния, а 9999-12-31 представляет текущее состояние.
+--------+------------+---------------------+---------------------+-------------+
| ID | CREATED_DT | START_DTTM | END_DTTM | STATE |
+--------+------------+---------------------+---------------------+-------------+
| 693282 | 2020-01-07 | 2020-02-03 14:56:54 | 9999-12-31 00:00:00 | Done |
| 693282 | 2020-01-07 | 2020-01-07 19:03:32 | 2020-02-03 14:56:54 | In Progress |
| 693282 | 2020-01-07 | 2020-01-07 19:03:05 | 2020-01-07 19:03:32 | To Do |
| 694796 | 2020-01-09 | 2020-03-09 13:17:11 | 9999-12-31 00:00:00 | Done |
| 694796 | 2020-01-09 | 2020-03-09 13:17:07 | 2020-03-09 13:17:11 | In Progress |
| 694796 | 2020-01-09 | 2020-01-09 21:38:38 | 2020-03-09 13:17:07 | To Do |
| 695653 | 2020-01-10 | 2020-02-11 18:22:37 | 9999-12-31 00:00:00 | Done |
| 695653 | 2020-01-10 | 2020-02-03 14:57:01 | 2020-02-11 18:22:37 | In Progress |
| 695653 | 2020-01-10 | 2020-01-10 19:32:18 | 2020-02-03 14:57:01 | To Do |
| 700806 | 2020-01-17 | 2020-01-17 15:59:13 | 9999-12-31 00:00:00 | To Do |
+--------+------------+---------------------+---------------------+-------------+
Я пытаюсь найти эффективный способ в python, учитывая вышеупомянутые особенности данных, создать столбец snapshot_dttm, показывающий одну строку на запись в день, начиная с CREATED_DT заявки в настоящее время и в будущее. , Фактически, окончательный набор данных не будет иметь или, скорее, не будет нуждаться в столбцах START_DTTM или END_DTTM, но будет поддерживать значения во всех других столбцах.
Например, ID: 693282 будет иметь одну строку для каждого дня с 2020-01-07 и STATE будут установлены на значение, которое совпадает с временным интервалом между START_DTTM и END_DTTM, и будет продолжать двигаться вперед сегодня и в будущем, каждый день, когда выполняется задание ETL.