Версионность
Что такое версионность?
В Datapulse (как и в DataVault) реализуется версионность вида SCD-2.
В таблице присутствует технический атрибут effective_from_dttm, который фиксирует дату и время, когда значения какого-либо другого атрибута в этой сущности поменялось.
Пример
Есть клиент
| ID | ФИО | Номер паспорта | HASHDIFF | EFFECTIVE_FROM_DTTM | 
|---|---|---|---|---|
| 1 | Иванов Иван Иванович | 1234 123456 | some_hash_string1 | 2025-02-01 12:34:56 | 
Изменился номер паспорта
| ID | ФИО | Номер паспорта | HASHDIFF | EFFECTIVE_FROM_DTTM | 
|---|---|---|---|---|
| 1 | Иванов Иван Иванович | 1234 123456 | some_hash_string1 | 2025-02-01 12:34:56 | 
| 1 | Иванов Иван Иванович | 5678 912345 | some_hash_string2 | 2025-04-01 23:45:59 | 
Добавляется новая строка с новым номером паспорта. Это и есть версионность.
В Datapulse она устанавливается автоматически на сателлиты. Поэтому сателлиты фиксируют все изменения своих атрибутов.
NULL значения
Если атрибут в источнике поменял свое значение на NULL, в сателлит также запишется новая строка, словно NULL - это обычное значение.
Дубли в источнике
В ситуациях, когда в источнике есть дубли по натуральному ключу, Datapulse ведет себя следующими образами:
- effective_from_dttm- разный. У двух строк столбец, значение которого записывается в- effective_from_dttm, разное. В таком случае Datapulse возьмет обе эти строки и запишет в сателлит, ведь на самом деле дублями они не считаются (разные версии, а не дубли).
- effective_from_dttm- одинаковый. В таком случае, Datapulse будет отбирать одну строку из нескольких по последнему- load_dttm. Если и он одинаковый, строка будет отбираться недетерминировано (случайно).