# Настройка переменных окружения

Локальная разработка

dbt v2 автоматически загружает переменные окружения из файла `.env` в текущем рабочем каталоге (папке, в которую вы переходите с помощью `cd` и из которой запускаете команды dbt в терминале). Это помогает управлять учетными данными и настройками, не прописывая их значения напрямую в `profiles.yml` и не раскрывая их в истории команд оболочки.

## Использование файла `.env`

1. Создайте файл `.env` в текущем рабочем каталоге (обычно в корне проекта dbt):

   ```env
   DBT_MY_DATABASE=my_database
   DBT_MY_SCHEMA=my_schema
   DBT_SECRET_KEY=my_secret_value
   ```

2. Используйте эти переменные в `profiles.yml` с помощью [функции Jinja `env_var`](https://docs.getdbt.tech/reference/dbt-jinja-functions/env_var.md):

   ```yaml
   my_profile:
     target: dev
     outputs:
       dev:
         type: snowflake
         account: my_account
         database: "{{ env_var('DBT_MY_DATABASE') }}"
         schema: "{{ env_var('DBT_MY_SCHEMA') }}"
   ```

3. Запускайте команды dbt как обычно. dbt v2 автоматически загрузит переменные из файла `.env`. Например, при запуске `dbtf debug` будут показаны параметры подключения со значениями из `.env`:

   ```shell
   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 использует следующий порядок приоритета (от высшего к низшему):

1. Окружение оболочки — переменные, заданные непосредственно в оболочке (например, `export DBT_MY_VAR=value`)
2. Файл `.env` — переменные, определенные в файле `.env` в текущем рабочем каталоге

Это означает, что переменные окружения, заданные в оболочке, всегда переопределяют значения из файла `.env`.

подсказка

Добавьте `.env` в файл `.gitignore`, чтобы конфиденциальные учетные данные не попали в систему контроля версий. Команда `dbtf init` автоматически добавляет `.env` в создаваемый файл `.gitignore`.

Подробнее об управлении переменными окружения в локальной среде см. в разделе [Настройка локальной среды](https://docs.getdbt.tech/docs/configure-dbt-extension.md#set-environment-variables-locally).
