Внесение изменений
Методология 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 нельзя изменять натуральный ключ таблицы, ведь это приведет к непоправимым и непредсказуемым последствиям.
Если сложилась ситуация, что необходимо изменить ключ сущности, потребуется создать сущность заново.
Изменение связи
Кроме метаданных у связи ничего изменять нельзя.
Если требуется, создайте новую связь.