Настройка переменных окружения
dbt v2 автоматически загружает переменные окружения из файла .env в текущем рабочем каталоге (папке, в которую вы переходите с помощью cd и из которой запускаете команды dbt в терминале). Это помогает управлять учетными данными и настройками, не прописывая их значения напрямую в profiles.yml и не раскрывая их в истории команд оболочки.
Использование файла .env
-
Создайте файл
.envв текущем рабочем каталоге (обычно в корне проекта dbt):DBT_MY_DATABASE=my_database
DBT_MY_SCHEMA=my_schema
DBT_SECRET_KEY=my_secret_value -
Используйте эти переменные в
profiles.ymlс помощью функции Jinjaenv_var:my_profile:
target: dev
outputs:
dev:
type: snowflake
account: my_account
database: "{{ env_var('DBT_MY_DATABASE') }}"
schema: "{{ env_var('DBT_MY_SCHEMA') }}" -
Запускайте команды dbt как обычно. dbt v2 автоматически загрузит переменные из файла
.env. Например, при запускеdbtf debugбудут показаны параметры подключения со значениями из.env:dbtf debug
...
Debugging connection:
"authenticator": "my_authenticator",
"account": "my_account",
"user": "my_user",
"database": "my_database", # Загружено из DBT_MY_DATABASE в .env
"schema": "my_schema", # Загружено из DBT_MY_SCHEMA в .env
Рекомендуем размещать файл .env в корне проекта и запускать команды dbt из этого каталога, поскольку файл загружается только из текущего рабочего каталога. При его загрузке не учитываются флаг --project-dir и переменная окружения (Версии dbt: v1.11 и новее) DBT_ENGINE_PROJECT_DIR, а dbt не будет искать файл в корне проекта, если вы запускаете команды из другого каталога.
Порядок приоритета
Если одна и та же переменная окружения определена в нескольких местах, dbt v2 использует следующий порядок приоритета (от высшего к низшему):
- Окружение оболочки — переменные, заданные непосредственно в оболочке (например,
export DBT_MY_VAR=value) - Файл
.env— переменные, определенные в файле.envв текущем рабочем каталоге
Это означает, что переменные окружения, заданные в оболочке, всегда переопределяют значения из файла .env.
Добавьте .env в файл .gitignore, чтобы конфиденциальные учетные данные не попали в систему контроля версий. Команда dbtf init автоматически добавляет .env в создаваемый файл .gitignore.
Подробнее об управлении переменными окружения в локальной среде см. в разделе Настройка локальной среды.