Добавление групп в ваш DAG
Группа — это коллекция узлов в dbt DAG. Группы имеют названия, и у каждой группы есть владелец. Они позволяют организовать целенаправленное сотрудничество внутри и между командами, ограничивая доступ к приватным моделям.
Члены группы могут включать модели, тесты, seeds, snapshots, анализы и метрики. (Не включены: источники и экспозиции.) Каждый узел может принадлежать только одной группе.
Объявление группы
Группы определяются в .yml‑файлах и указываются внутри ключа groups:.
Централизованное определение группы
Чтобы централизованно определить группу в вашем проекте, есть два варианта:
-
Создать один файл
_groups.ymlв корне директорииmodels. -
Создать один файл
_groups.ymlв корне директорииgroups. Для этого варианта также необходимо настроить параметрmodel-pathsв файлеdbt_project.yml:model-paths: ["models", "groups"]
Добавление модели в группу
Используйте конфигурацию group, чтобы добавить одну или несколько моделей в группу.
- На уровне проекта
- На уровне модели
- В файле
models:
marts:
finance:
+group: finance
models:
- name: model_name
config:
group: finance
{{ config(group = 'finance') }}
select ...
Ссылка на модель в группе
По умолчанию все модели в группе имеют модификатор доступа protected. Это означает, что они могут быть использованы в качестве ссылки для последующих ресурсов в любой группе в том же проекте, используя функцию ref. Если свойство access сгруппированной модели установлено как private, только ресурсы внутри её группы могут ссылаться на неё.
models:
- name: finance_private_model
config:
access: private # changed to config in v1.10
group: finance
# в другой группе!
- name: marketing_model
config:
group: marketing
select * from {{ ref('finance_private_model') }}
$ dbt run -s marketing_model
...
dbt.exceptions.DbtReferenceError: Parsing Error
Node model.jaffle_shop.marketing_model attempted to reference node model.jaffle_shop.finance_private_model,
which is not allowed because the referenced node is private to the finance group.