Попытка написать задание ETL, которое добавляет дату снимка для прошлых записей - PullRequest
0 голосов
/ 08 апреля 2020

Используя 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...