Мне интересно знать, сталкивался ли кто-нибудь здесь с ситуацией, когда источник не всегда уникален при работе со снимками в DBT.
У меня есть озеро данных, куда данные поступают только на основе добавления. Каждый раз, когда источник обновляется, в соответствующей таблице в озере данных создается новая запись.
К моменту запуска решения DBT в моем источнике может быть более 1 строки с уникальным идентификатором, поскольку данные менялись несколько раз с момента последнего запуска.
В идеале я хотел бы обновить соответствующие столбцы dbt_valid_to из таблицы моментальных снимков с самой ранней обновленной записью_at из источника, а затем добавить новые записи в таблицу моментальных снимков, сделав последнюю обновленную запись_at текущей.
Я знаю, как добиться этого с помощью оконных функций, но не уверен, как справиться с такой ситуацией с dbt.
Интересно, сталкивался ли кто-нибудь с такой же проблемой раньше?
Snapshot Table
| **id** | **some_attribute** | **valid_from** | **valid_to** |
| 123 | ABCD | 2021-01-01 00:00:00 | 2021-06-30 00:00:00 |
| 123 | ZABC | 2021-06-30 00:00:00 | null |
Source Table
|**id**|**some_attribute**| **updated_at** |
| 123 | ABCD | 2021-01-01 00:00:00 |-> already been loaded to snapshot
| 123 | ZABC | 2021-06-30 00:00:00 |-> already been loaded to snapshot
-------------------------------------------
| 123 | ZZAB | 2021-11-21 00:10:00 |
| 123 | FXAB | 2021-11-21 15:11:00 |
Snapshot Desired Result
| **id** | **some_attribute** | **valid_from** | **valid_to** |
| 123 | ABCD | 2021-01-01 00:00:00 | 2021-06-30 00:00:00 |
| 123 | ZABC | 2021-06-30 00:00:00 | 2021-11-21 00:10:00 |
| 123 | ZZAB | 2021-11-21 00:10:00 | 2021-11-21 15:11:00 |
| 123 | FXAB | 2021-11-21 15:11:00 | null |