@denislysenko
data engineer

По каким столбцам фильтровать данные, которые уже были загружены и грузить только новые данные?

Мне нужно реализовать инкрементальную загрузку данных.

пример:
Кусок таблицы выгдялит так
select * from order_states limit 20

+--------+-------------+-------------------+-------+-------------------+------+-----------+--------+-------+------------+
|order_id|ext_source_id|                 dt|  state|                 ts|msk_dt|api_user_id|state_id|comment|ext_state_id|
+--------+-------------+-------------------+-------+-------------------+------+-----------+--------+-------+------------+
|     919|            1|2021-01-29 16:48:27|   PROC|2021-02-12 00:12:20|  null|       null|       7|   null|          72|
|     920|            1|2021-01-29 16:48:30|PRINTED|2021-02-12 00:12:20|  null|       null|       1|   null|          73|
|     920|            1|2021-01-29 16:48:30|   DONE|2021-02-12 00:12:20|  null|       null|       1|   null|          74|
|     921|            1|2021-01-29 14:48:30|   SAVE|2021-02-12 00:12:20|  null|       null|       6|   null|          75|
|     921|            1|2021-01-29 14:48:30|   PROC|2021-02-12 00:12:20|  null|       null|       7|   null|          72|
|     922|            1|2021-01-29 14:48:00|    NEW|2021-02-12 00:12:20|  null|       null|       9|   null|          76|
|     923|            1|2021-01-29 14:48:31|PRINTED|2021-02-12 00:12:20|  null|       null|       1|   null|          73|
|     923|            1|2021-01-29 14:48:31|   DONE|2021-02-12 00:12:20|  null|       null|       1|   null|          74|
|     924|            1|2021-01-29 14:48:21|   SAVE|2021-02-12 00:12:20|  null|       null|       6|   null|          75|
|     924|            1|2021-01-29 14:48:22|   PROC|2021-02-12 00:12:20|  null|       null|       7|   null|          72|
|     925|            1|2021-01-29 14:48:52|PRINTED|2021-02-12 00:12:20|  null|       null|       1|   null|          73|
|     926|            1|2021-01-29 14:48:04|    NEW|2021-02-12 00:12:20|  null|       null|       9|   null|          76|
|     927|            1|2021-01-29 14:48:23|   SAVE|2021-02-12 00:12:20|  null|       null|       6|   null|          75|
|     925|            1|2021-01-29 14:48:52|   DONE|2021-02-12 00:12:20|  null|       null|       1|   null|          74|
|     928|            1|2021-01-29 14:48:04|    NEW|2021-02-12 00:12:20|  null|       null|       9|   null|          76|
|     927|            1|2021-01-29 14:48:24|   PROC|2021-02-12 00:12:20|  null|       null|       7|   null|          72|
|     929|            1|2021-01-29 13:48:39|PRINTED|2021-02-12 00:12:20|  null|       null|       1|   null|          73|
|     930|            1|2021-01-29 14:48:24|PRINTED|2021-02-12 00:12:20|  null|       null|       1|   null|          73|
|     929|            1|2021-01-29 13:48:39|   DONE|2021-02-12 00:12:20|  null|       null|       1|   null|          74|
|     931|            1|2021-01-29 14:48:04|PRINTED|2021-02-12 00:12:20|  null|       null|       1|   null|          73|
+--------+-------------+-------------------+-------+-------------------+------+-----------+--------+-------+------------+


в качестве вотерпоинта я сначала выбрал столбцец order_id
и создал отдельную таблицу где хранил значение вотерпоинта и выводил недостающие данные таким образом:
select * from order_states where order_id > {значение вотерпоинта, например 1040}


Но мне кажется, что судя по данным, это не самый оптимальный способ, для фильтрации недостающих значений,
По каким столбцам лучше фильтровать недостающие значения, чтобы не терять никакие данные при дополнительной загрузке? По dt и order_id одновременно?
  • Вопрос задан
  • 50 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы