Перейти к основному содержимому

dbt_valid_to_current

Описание

Используйте конфигурацию dbt_valid_to_current, чтобы задать пользовательский индикатор для значения dbt_valid_to в текущих записях снимков (например, будущая дата). По умолчанию это значение равно NULL. Когда оно установлено, dbt будет использовать указанное значение вместо NULL для dbt_valid_to для текущих записей в таблице снимков.

Этот подход упрощает назначение пользовательской даты, работу в соединении или выполнение фильтрации на основе диапазона, требующей конечной даты.

warning

Чтобы избежать непреднамеренного изменения данных, 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)).

  • Ограничение Jinjadbt_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/schema.yml
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, установленное в конфигурации:

iddbt_scd_iddbt_updated_atdbt_valid_fromdbt_valid_to
160a1f1dbdf899a4dd...2024-10-02 ...2024-10-02 ...9999-12-31 ...
2b1885d098f8bcff51...2024-10-02 ...2024-10-02 ...9999-12-31 ...
0