Skip to content

Версионность

Что такое версионность?

В 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 ведет себя следующими образами:

  1. effective_from_dttm - разный. У двух строк столбец, значение которого записывается в effective_from_dttm, разное. В таком случае Datapulse возьмет обе эти строки и запишет в сателлит, ведь на самом деле дублями они не считаются (разные версии, а не дубли).
  2. effective_from_dttm - одинаковый. В таком случае, Datapulse будет отбирать одну строку из нескольких по последнему load_dttm. Если и он одинаковый, строка будет отбираться недетерминировано (случайно).