latest_version_pointer
- Файл проекта
- Файл свойств
- Конфигурация SQL
models:
<resource-path>:
+latest_version_pointer:
enabled: true | false
alias: <string>
models:
- name: [<model-name>]
config:
latest_version_pointer:
enabled: true | false
alias: <string>
{{ config(
latest_version_pointer={
"enabled": true | false,
"alias": "<string>"
}
) }}
Определение
В dbt v2 параметр latest_version_pointer включён по умолчанию для всех моделей с версионированием. Если у модели с версионированием явно задан alias, совпадающий с базовым именем модели, может возникнуть ошибка конфликта имён dbt1005. Способы её устранения описаны ниже в разделе Конфликты имён.
Параметр latest_version_pointer создаёт представление с базовым именем модели с версионированием (например, dim_customers), которое всегда указывает на объект базы данных, соответствующий последней версии (например, dim_customers_v2). Представление создаётся после успешной материализации модели с is_latest_version = true; для всех остальных версий его создание пропускается.
Вы также можете включить эту функцию глобально для всех моделей с версионированием, установив флаг latest_version_pointer_enabled_by_default в значение true в файле dbt_project.yml:
flags:
latest_version_pointer_enabled_by_default: true
latest_version_pointer принимает два необязательных вложенных ключа для настройки отдельных моделей:
| Ключ | Тип | Значение по умолчанию | Описание |
|---|---|---|---|
enabled | boolean | — | Включает или отключает представление-указатель для этой модели. Если задан, переопределяет флаг проекта latest_version_pointer_enabled_by_default; если не задан, используется значение этого флага. |
alias | string | Базовое имя модели | Пользовательское имя представления-указателя. Переопределяет базовое имя, используемое по умолчанию. Подробнее см. в разделе Настройка псевдонима. |
Настройка псевдонима
По умолчанию представление-указатель использует базовое имя модели (например, dim_customers). Это можно изменить двумя способами:
- Для отдельной модели: задайте
latest_version_pointer.aliasв конфигурации модели. - Глобально: переопределите макрос
generate_latest_version_pointer_aliasв своём проекте. Этот макрос работает по тому же принципу, что иgenerate_alias_name.
Конфликты имён
Чтобы предотвратить конфликты имён, dbt выдаёт ошибку dbt1005, если псевдоним последней версии совпадает с именем представления-указателя. В dbt v2, где latest_version_pointer включён по умолчанию, эта ошибка может возникать для моделей с явно заданным alias, совпадающим с базовым именем модели, даже если вы сами никогда не настраивали указатель.
Например, следующая конфигурация вызовет ошибку dbt1005, поскольку и dim_customers_v2, и представление-указатель получат имя dim_customers:
dbt1005 (Cannot create latest version pointer: the latest version of 'dim_customers' is already aliased to 'dim_customers')
models:
- name: dim_customers
versions:
- v: 1
- v: 2
config:
alias: dim_customers # collides with the pointer view name
config:
latest_version_pointer:
enabled: true
Чтобы исправить это, выберите один из следующих вариантов:
- Удалить
alias(рекомендуется) - Отключить указатель на последнюю версию для этой модели
- Задать уникальный
alias - Переопределить макрос
generate_latest_version_pointer_alias
Удалить alias (рекомендуется)
Удалите alias из конфигурации последней версии и позвольте автоматически создаваемому указателю обеспечить доступ по этому имени:
config:
alias: dim_customers
Отключить указатель на последнюю версию для этой модели
Этот подход сразу обеспечивает обратную совместимость с существующими конфигурациями alias:
config:
alias: dim_customers
config:
latest_version_pointer:
enabled: false
Задать уникальный alias
config:
alias: dim_customers_latest
Переопределить макрос generate_latest_version_pointer_alias
Переопределите макрос generate_latest_version_pointer_alias, чтобы использовать другое правило именования на глобальном уровне:
{% macro generate_latest_version_pointer_alias(custom_alias_name=none, node=none) -%}
{{ node.name ~ "_latest" }}
{%- endmacro %}
Связанная документация
- Версии моделей
- Указание на последнюю версию
- Флаг
latest_version_pointer_enabled_by_default versionslatest_version