Перейти к основному содержимому
💡Полезно знать
Доступно начиная с dbt v1.12 или в канале релизов v1 Latest.

latest_version_pointer

dbt_project.yml
models:
<resource-path>:
+latest_version_pointer:
enabled: true | false
alias: <string>

Определение​

Платформа dbt на базе dbt v2

В 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:

dbt_project.yml
flags:
latest_version_pointer_enabled_by_default: true

latest_version_pointer принимает два необязательных вложенных ключа для настройки отдельных моделей:

КлючТипЗначение по умолчаниюОписание
enabledboolean—Включает или отключает представление-указатель для этой модели. Если задан, переопределяет флаг проекта latest_version_pointer_enabled_by_default; если не задан, используется значение этого флага.
aliasstringБазовое имя моделиПользовательское имя представления-указателя. Переопределяет базовое имя, используемое по умолчанию. Подробнее см. в разделе Настройка псевдонима.

Настройка псевдонима​

По умолчанию представление-указатель использует базовое имя модели (например, 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 из конфигурации последней версии и позвольте автоматически создаваемому указателю обеспечить доступ по этому имени:

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, чтобы использовать другое правило именования на глобальном уровне:

macros/generate_latest_version_pointer_alias.sql
{% macro generate_latest_version_pointer_alias(custom_alias_name=none, node=none) -%}
{{ node.name ~ "_latest" }}
{%- endmacro %}

Связанная документация​

Нашли ошибку?

0
Loading