Skip to content

Внесение изменений

Методология DataVault прекрасно подходит для масштабирования модели данных, что подразумевает добавление новых объектов (хабы, сателлиты и линки) в модель. Но иногда требуется изменить уже существующие объекты, что не так тривиально как может показаться на первый взгляд.

dbt on_schema_change

Хабы, сателлиты и линки в Datapulse - модели dbt с типом обновления incremental. Прежде, чем читать данный раздел обязательно ознакомьтесь с параметром dbt on_schema_change, про который детально написано здесь.

Изменение сущностей

Добавление и удаление атрибутов

Рекомендуется при добавлении нового атрибута в сущность создавать новый сателлит. Так вы будете уверены, что это никак не скажется на зависимых объектах.

Но если все же вам необходимо добавление атрибута в уже существующий сателлит, то есть одно значительное ограничение.

Все дело заключается в столбце hashdiff, который хранит в себе hash значений атрибутов сателлита. При добавлении нового сателлита, hash изменится, что при инкрементальной загрузке приведет к добавлению по новой всех строчек из источника.

Представим, есть сателлит.

ID ФИО ДАТА РОЖДЕНИЯ HASHDIFF EFFECTIVE_FROM_DTTM
1 Иванов Иван Иванович 16.01.1997 some_hash_string1 2025-02-01 12:34:56

Добавив в него новый атрибут, вы автоматически создаете новые версии для каждого ID.

ID ФИО ДАТА РОЖДЕНИЯ НОМЕР ПАСПОРТА HASHDIFF EFFECTIVE_FROM_DTTM
1 Иванов Иван Иванович 16.01.1997 NULL some_hash_string1 2025-02-01 12:34:56
1 Иванов Иван Иванович 16.01.1997 1234 123456 some_hash_string2 2025-04-01 23:45:59

Другими словами вы задублируете большую часть своих данных.

Ровно то же самое касается и удаления атрибута.

Также следует учитывать, что в Datapulse все модели инкрементальные и захватывают из источника только новые или измененные строки. Если вы добавите новый атрибут в сателлит, но инкремент на источнике не изменится, вы не получите новых строк в сателлите. Потребуется его полное пересоздание.

Важно

Учитывая все вышесказнное - Datapulse пересоздает полностью сателлиты, у которых добавились новые атрибуты!

Тем самым вы потеряете всю накопленную историю!

Дополнительно, у Datapulse есть ограничение - он пересоздает сателлиты без партиций. В будущем это будет исправлено.

Добавление нового источника в сущность

Добавление нового источника в сущность не влечет за собой каких-либо неявных последствий (как это было в предыдущем пункте). Поэтому смело добавляйте новые источники через интерфейс Datapulse!

Изменение натурального ключа

В Datapulse нельзя изменять натуральный ключ таблицы, ведь это приведет к непоправимым и непредсказуемым последствиям.

Если сложилась ситуация, что необходимо изменить ключ сущности, потребуется создать сущность заново.

Изменение связи

Кроме метаданных у связи ничего изменять нельзя.

Если требуется, создайте новую связь.