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

Добавление групп в ваш DAG

Группа — это коллекция узлов в dbt DAG. Группы имеют названия, и у каждой группы есть владелец. Они позволяют организовать целенаправленное сотрудничество внутри и между командами, ограничивая доступ к приватным моделям.

Члены группы могут включать модели, тесты, seeds, snapshots, анализы и метрики. (Не включены: источники и экспозиции.) Каждый узел может принадлежать только одной группе.

Объявление группы

Группы определяются в .yml‑файлах и указываются внутри ключа groups:.

Централизованное определение группы

Чтобы централизованно определить группу в вашем проекте, есть два варианта:

  • Создать один файл _groups.yml в корне директории models.

  • Создать один файл _groups.yml в корне директории groups. Для этого варианта также необходимо настроить параметр model-paths в файле dbt_project.yml:

    model-paths: ["models", "groups"]

Добавление модели в группу

Используйте конфигурацию group, чтобы добавить одну или несколько моделей в группу.

dbt_project.yml
models:
marts:
finance:
+group: finance

Ссылка на модель в группе

По умолчанию все модели в группе имеют модификатор доступа protected. Это означает, что они могут быть использованы в качестве ссылки для последующих ресурсов в любой группе в том же проекте, используя функцию ref. Если свойство access сгруппированной модели установлено как private, только ресурсы внутри её группы могут ссылаться на неё.

models/schema.yml
models:
- name: finance_private_model
config:
access: private # changed to config in v1.10
group: finance

# в другой группе!
- name: marketing_model
config:
group: marketing
models/marketing_model.sql
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.

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

0
Loading