access
version: 2
models:
- name: model_name
access: private | protected | public
Вы можете применять модификаторы доступа в конфигурационных файлах, включая dbt_project.yml, или к моделям по отдельности в properties.yml. Применение конфигураций доступа к подпапке изменяет значение по умолчанию для всех моделей в этой подпапке, поэтому убедитесь, что вы хотите такого поведения. При установке индивидуального доступа к модели, группа или подпапка может содержать различные уровни доступа, поэтому, когда вы назначаете модели access: public, убедитесь, что вы хотите такого поведения.
Существует несколько подходов к настройке доступа:
-
В
properties.ymlс использованием старого метода:models/properties_my_public_model.ymlversion: 2
models:
- name: my_public_model
access: public # Старый метод, все еще поддерживается
-
В
properties.ymlс использованием нового метода (для версии 1.7 или выше). Используйте либо старый метод, либо новый метод, но не оба для одной и той же модели:models/properties_my_public_model.ymlversion: 2
models:
- name: my_public_model
config:
access: public # поддерживается с версии 1.7
-
В
dbt_project.yml:dbt_project.ymlmodels:
my_project_name:
subfolder_name:
+group: my_group
+access: private # устанавливает значение по умолчанию для всех моделей в этой подпапке -
В файле
my_public_model.sql:models/my_public_model.sql-- models/my_public_model.sql
{{ config(access = "public") }}
select ...
После того как вы определите access, перезапустите производственное задание, чтобы применить изменения.
Определение
Уровень доступа модели, для которой вы объявляете свойства.
Некоторые модели (не все) предназначены для использования через функцию ref в разных группах.
| Доступ | Доступен для |
|---|---|
| private | Та же группа |
| protected | Тот же проект/пакет |
| public | Любая группа, пакет или проект. После определения перезапустите производственное задание, чтобы применить изменения. |
Если вы попытаетесь сослаться на модель вне её поддерживаемого доступа, вы увидите ошибку:
dbt run -s marketing_model
...
dbt.exceptions.DbtReferenceError: Parsing Error
Node model.jaffle_shop.marketing_model attempted to reference node model.jaffle_shop.finance_model,
which is not allowed because the referenced node is private to the finance group.
Значение по умолчанию
По умолчанию все модели "защищены". Это означает, что другие модели в том же проекте могут ссылаться на н их.