О функции env_var
Функция env_var
может быть использована для включения переменных окружения из системы в ваш проект dbt. Эта функция env_var
может быть использована в файле profiles.yml
, файле dbt_project.yml
, файле sources.yml
, ваших файлах schema.yml
и в моделях .sql
. По сути, env_var
доступна везде, где dbt обрабатывает код jinja.
Когда используется в файле profiles.yml
(чтобы избежать размещения учетных данных на сервере), она может быть использована следующим образом:
profile:
target: prod
outputs:
prod:
type: postgres
host: 127.0.0.1
# ВАЖНО: Убедитесь, что вся строка Jinja заключена в кавычки
user: "{{ env_var('DBT_USER') }}"
password: "{{ env_var('DBT_PASSWORD') }}"
....
Если переменные окружения DBT_USER
и DBT_PASSWORD
присутствуют при вызове dbt, то эти переменные будут добавлены в профиль, как и ожидалось. Если какие-либо переменные окружения не установлены, dbt выдаст ошибку компиляции.
Если передаете переменную окружения для свойства, использующего целочисленный тип (например, port
, threads
), обязательно добавьте фильтр в выражение Jinja, как показано здесь. В противном случае dbt выдаст ошибку ['threads']: '1' is not of type 'integer'
.
{{ env_var('DBT_THREADS') | int }}
или {{ env_var('DB_PORT') | as_number }}
Убедитесь, что вся строка jinja заключена в кавычки (как показано выше), иначе YAML-парсер будет сбит с толку фигурными скобками Jinja.
env_var
принимает второй, необязательный аргумент для значения по умолчанию, например:
...
models:
jaffle_shop:
+materialized: "{{ env_var('DBT_MATERIALIZATION', 'view') }}"