Версионность
Что такое версионность?
В 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
. Если и он одинаковый, строка будет отбираться недетерминировано (случайно).