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 ... |