dbt_valid_to_current
Описание
Используйте конфигурацию dbt_valid_to_current, чтобы задать пользовательский индикатор для значения dbt_valid_to в текущих записях снимков (например, будущая дата). По умолчанию это значение равно NULL. Когда оно установлено, dbt будет использовать указанное значение вместо NULL для dbt_valid_to для текущих записей в таблице снимков.
Этот подход упрощает назначение пользовательской даты, работу в соединении или выполнение фильтрации на основе диапазона, требующей конечной даты.
Чтобы избежать непреднамеренного изменения данных, dbt не будет автоматически изменять текущее значение в существующем столбце dbt_valid_to. Существующие текущие записи по-прежнему будут иметь dbt_valid_to, установленное в NULL.
Любые новые записи, вставленные после применения конфигурации dbt_valid_to_current, будут иметь dbt_valid_to, установленное в указанное значение (например, '9999-12-31'), вместо значения по умолчанию NULL.
Соображения
-
Выражения даты — Укажите жестко закодированное выражение даты, совместимое с вашей платформой данных, например,
to_date('9999-12-31'). Обратите внимание, что синтаксис может различаться в зависимости от хранилища (например,to_date('YYYY-MM-DD') илиdate(YYYY, MM, DD)). -
Ограничение Jinja —
dbt_valid_to_currentпринимает только статические SQL-выражения. Выражения Jinja (например,{{ var('my_future_date') }}) не поддерживаются. -
Отложение и
state:modified— Изменения вdbt_valid_to_currentсовместимы с отложением и--select state:modified. Когда эта конфигурация изменяется, она появится в выборкахstate:modified, вызывая предупреждение о необходимости вручную внести необходимые обновления снимков.
Значение по умолчанию
По умолчанию dbt_valid_to устанавливается в NULL для текущих (самых последних) записей в вашей таблице снимков. Это означает, что эти записи все еще действительны и не имеют определенной конечной даты.
Если вы предпочитаете использовать конкретное значение вместо NULL для dbt_valid_to в текущих и будущих записях, вы можете использовать опцию конфигурации dbt_valid_to_current. Например, установив дату в далеком будущем, 9999-12-31.
Значение, назначенное dbt_valid_to_current, должно быть строкой, представляющей допустимую дату или временную метку, в зависимости от требований вашей базы данных. Используйте выражения, которые работают в рамках платформы данных.
Влияние на записи снимков
Когда вы устанавливаете dbt_valid_to_current, это влияет на то, как dbt управляет столбцом dbt_valid_to в вашей таблице сним ков:
-
Для существующих записей — Чтобы избежать непреднамеренного изменения данных, dbt не будет автоматически изменять текущее значение в существующем столбце
dbt_valid_to. Существующие текущие записи по-прежнему будут иметьdbt_valid_to, установленное вNULL. -
Для новых записей — Любые новые записи, вставленные после применения конфигурации
dbt_valid_to_current, будут иметьdbt_valid_to, установленное в указанное значение (например, '9999-12-31'), вместоNULL.
Это означает, что ваша таблица снимков будет содержать текущие записи с dbt_valid_to значениями как NULL (из существующих данных), так и новым указанным значением (из новых данных). Если вы предпочитаете иметь согласованные значения dbt_valid_to для текущих записей, вы можете вручную обновить существующие записи в вашей таблице снимков (где dbt_valid_to равно NULL), чтобы они соответствовали вашему значению dbt_valid_to_current.
Пример
snapshots:
- name: my_snapshot
config:
strategy: timestamp
updated_at: updated_at
dbt_valid_to_current: "to_date('9999-12-31')"
columns:
- name: dbt_valid_from
description: Временная метка, когда запись стала действительной.
- name: dbt_valid_to
description: >
Временная метка, когда запись перестала быть действительной. Для текущих записей
это либо `NULL`, либо значение, указанное в `dbt_valid_to_current`
(например, `'9999-12-31'`).
Полученная таблица снимков содержит значение столбца dbt_valid_to, установленное в конфигурации:
| id | dbt_scd_id | dbt_updated_at | dbt_valid_from | dbt_valid_to |
|---|---|---|---|---|
| 1 | 60a1f1dbdf899a4dd... | 2024-10-02 ... | 2024-10-02 ... | 9999-12-31 ... |
| 2 | b1885d098f8bcff51... | 2024-10-02 ... | 2024-10-02 ... | 9999-12-31 ... |