hard_deletes
snapshots:
- name: <snapshot_name>
config:
hard_deletes: 'ignore' | 'invalidate' | 'new_record'
snapshots:
<resource-path>:
+hard_deletes: "ignore" | "invalidate" | "new_record"
{{
config(
unique_key='id',
strategy='timestamp',
updated_at='updated_at',
hard_deletes='ignore' | 'invalidate' | 'new_record'
)
}}
Описание
Description
Конфигурация hard_deletes дает вам больше контроля над тем, как обрабатывать строки, удалённые из источника. Поддерживаются следующие варианты: ignore (по умолчанию), invalidate (заменяет устаревший параметр invalidate_hard_deletes=true) и new_record. Обратите внимание, что new_record создаст новый служебный столбец с метаданными в таблице snapshot.
Параметр hard_deletes можно использовать с адаптерами dbt-postgres, dbt-bigquery, dbt-snowflake и dbt-redshift.
Если вы обновляете существующий снимок для использования конфигурации hard_deletes, dbt не будет автоматически обрабатывать миграции. Мы рекомендуем использовать эти настройки только для новых снимков или организовать обновление существующих таблиц перед включением этой настройки.
По умолчанию
По умолчанию, если вы не указываете hard_deletes, он автоматически будет установлен в ignore. Удаленные строки не будут отслеживаться, и их столбец dbt_valid_to останется NULL.
Конфигурация hard_deletes имеет три метода:
| Loading table... |
Соображения
- Обратная совместимость: Конфигурация
invalidate_hard_deletesвсе еще поддерживается для существующих снимков, но не может использоваться вместе сhard_deletes. - Новые снимки: Для новых снимков мы рекомендуем использовать
hard_deletesвместоinvalidate_hard_deletes. - Миграция: Если вы переключаете существующий снимок на использование
hard_deletesбез миграции ваших данных, вы можете столкнуться с несоответствующими или некорректными результатами, такими как смешение старых и новых форматов данных.
Пример
snapshots:
- name: my_snapshot
config:
hard_deletes: new_record # варианты: 'ignore', 'invalidate', или 'new_record'
strategy: timestamp
updated_at: updated_at
columns:
- name: dbt_valid_from
description: Временная метка, когда запись стала действительной.
- name: dbt_valid_to
description: Временная метка, когда запись перестала быть действительной.
- name: dbt_is_deleted
description: Указывает, была ли запись удалена.
Полученная таблица снимков содержит конфигурацию hard_deletes: new_record. Если запись удалена и позже восстановлена, полученная таблица снимков может выглядеть следующим образом:
| Loading table... |
В этом примере столбец dbt_is_deleted устанавливается в True, когда запись удалена. Когда запись восстанавливается, столбец dbt_is_deleted устанавливается в False.