Профили подключения
Когда вы вызываете dbt из командной строки, dbt анализирует ваш файл dbt_project.yml
и получает имя profile
, которое необходимо dbt для подключения к вашему .
# Пример файла dbt_project.yml
name: 'jaffle_shop'
profile: 'jaffle_shop'
...
Затем dbt проверяет ваш файл profiles.yml
на наличие профиля с таким же именем. Профиль содержит все необходимые детали для подключения к вашему хранилищу данных.
dbt будет искать файл profiles.yml
в текущем рабочем каталоге и по умолчанию в каталоге ~/.dbt/
, если он не найден.
Этот файл обычно находится вне вашего проекта dbt, чтобы избежать попадания конфиденциальных данных в систему контроля версий, но profiles.yml
можно безопасно добавить в систему контроля версий при использовании переменных окружения для загрузки конфиденциальных данных.
# пример файла profiles.yml
jaffle_shop:
target: dev
outputs:
dev:
type: postgres
host: localhost
user: alice
password: <password>
port: 5432
dbname: jaffle_shop
schema: dbt_alice
threads: 4
О файле profiles.yml
В вашем файле profiles.yml
вы можете хранить столько профилей, сколько вам нужно. Обычно у вас будет один профиль для каждого используемого вами хранилища. Большинство организаций имеют только один профиль.
Для получения информации о настройке расширенных опций, смотрите страницу справки по profiles.yml
.
О профилях
Профиль состоит из целей и указанной цели по умолчанию.
Каждая цель указывает тип хранилища, к которому вы подключаетесь, учетные данные для подключения к хранилищу и некоторые специфические для dbt настройки.
Учетные данные, которые вам нужно предоставить в вашей цели, различаются в зависимости от хранилищ — примеры профилей для каждого поддерживаемого хранилища доступны в разделе Поддерживаемые платформы данных.
Совет: Возможно, вам потребуется заключить ваш пароль в кавычки, если он содержит специальные символы. Подробнее здесь.
Настройка вашего профиля
Чтобы настроить ваш профиль, скопируйте правильный пример профиля для вашего хранилища в ваш файл profiles.yml
и обновите детали следующим образом:
- Имя профиля: Замените имя профиля на осмысленное имя – часто хорошей идеей является использование названия вашей организации. Убедитесь, что это то же самое имя, что указано в
profile
в вашем файлеdbt_project.yml
. target
: Это цель по умолчанию, которую будет использовать ваш проект dbt. Она должна быть одной из целей, которые вы определяете в вашем профиле. Обычно она устанавливается вdev
.- Заполнение вашей цели:
type
: Тип хранилища данных, к которому вы подключаетесь- Учетные данные хранилища: Получите их у вашего администратора базы данных, если у вас их еще нет. Помните, что учетные данные пользователя являются очень конфиденциальной информацией, которую не следует передавать.
schema
: Схема по умолчанию, в которой dbt будет создавать объекты.threads
: Количество потоков, на которых будет работать проект dbt.
Вы можете найти больше информации о том, какие значения использовать в ваших целях ниже.
Используйте команду debug для проверки вашего подключения к хранилищу. Запустите dbt debug
изнутри проекта dbt, чтобы протестировать ваше подключение.
Понимание целей в профилях
dbt поддерживает несколько целей в одном профиле, чтобы поощрять использование отдельных сред для разработки и производства, как обсуждается в Средах dbt Core.
Типичный профиль для аналитика, использующего dbt локально, будет иметь цель с именем dev
, и она будет установлена как цель по умолчанию.
Вы также можете иметь цель prod
в вашем профиле, которая создает объекты в вашей производственной схеме. Однако, поскольку часто желательно выполнять производственные запуски по расписанию, мы рекомендуем развертывать ваш проект dbt на отдельной машине, отличной от вашей локальной машины. Большинство пользователей dbt имеют только цель dev
в своем профиле на локальной машине.
Если у вас есть несколько целей в вашем профиле и вы хотите использовать цель, отличную от цели по умолчанию, вы можете сделать это, используя опцию --target
при выполнении команды dbt.
Понимание учетных данных хранилища
Мы рекомендуем, чтобы у каждого пользователя dbt был свой собственный набор учетных данных базы данных, включая отдельного пользователя для производственных запусков dbt – это помогает отлаживать некорректные запросы, упрощает владение схемами и повышает безопасность.
Чтобы гарантировать, что учетные данные пользователя, которые вы используете в вашей цели, позволяют dbt работать, вам нужно убедиться, что у пользователя есть соответствующие привилегии. Хотя точные привилегии, необходимые для этого, различаются между хранилищами данных, как минимум ваш пользователь должен иметь возможность:
- читать исходные данные
- создавать схемы¹
- читать системные таблицы
Если вашему пользователю не могут быть предоставлены привилегии на создание схем, ваши запуски dbt должны вместо этого нацеливаться на существующую схему, в которой у вашего пользователя есть разрешение на создание отношений.
Понимание целевых схем
Целевая схема представляет собой схему по умолчанию, в которую dbt будет строить объекты, и часто используется как различитель между отдельными средами в хранилище.
dbt использует термин "схема" в цели для всех поддерживаемых хранилищ для согласованности. Обратите внимание, что в случае BigQuery схема на самом деле является набором данных.
Схема, используемая для производства, должна быть названа так, чтобы было ясно, что она готова для использования конечными пользователями для анализа – мы часто называем ее analytics
.
В разработке, шаблон, который мы нашли полезным, заключается в том, чтобы называть схему в вашей цели dev
как dbt_<имя_пользователя>
. Добавление вашего имени к схеме позволяет нескольким пользователям разрабатывать в dbt, так как у каждого пользователя будет своя отдельная схема для разработки, чтобы пользователи не строили друг на друге, и обеспечивая, что владение объектами и разрешения согласованы по всей схеме.
Обратите внимание, что нет необходимости создавать вашу целевую схему заранее – dbt проверит, существует ли схема, когда она запускается, и создаст ее, если она не существует.
Хотя целевая схема представляет собой схему по умолчанию, которую будет использовать dbt, может иметь смысл разделить ваши модели на отдельные схемы, что можно сделать, используя пользовательские схемы.
Понимание потоков
Когда dbt запускается, он создает направленный ациклический граф (DAG) связей между моделями. Количество потоков представляет собой максимальное количество путей через граф, над которыми dbt может работать одновременно – увеличение количества потоков может минимизировать время выполнения вашего проекта. Значение по умолчанию для потоков в пользовательских профилях составляет 4 потока.
Для получения д ополнительной информации ознакомьтесь с использованием потоков.
Продвинутое: Настройка каталога профиля
Родительский каталог для profiles.yml
определяется с использованием следующего приоритета:
- Опция
--profiles-dir
- Переменная окружения
DBT_PROFILES_DIR
- Текущий рабочий каталог
- Каталог
~/.dbt/
Чтобы проверить ожидаемое расположение вашего файла profiles.yml
для вашей установки dbt, вы можете выполнить следующую команду:
$ dbt debug --config-dir
Чтобы просмотреть ваш файл profiles.yml, выполнит е:
open /Users/alice/.dbt
Возможно, вы захотите, чтобы ваш файл profiles.yml
хранился в другом каталоге, чем ~/.dbt/
– например, если вы используете переменные окружения для загрузки ваших учетных данных, вы можете выбрать включение этого файла в корневой каталог вашего проекта dbt.
Обратите внимание, что файл всегда должен называться profiles.yml
, независимо от того, в каком каталоге он находится.
Существует несколько способов указать dbt другое расположение для вашего файла profiles.yml
:
1. Используйте опцию --profiles-dir
при выполнении команды dbt
Эту опцию можно использовать следующим образом:
$ dbt run --profiles-dir path/to/directory
Если вы используете этот метод, опция --profiles-dir
должна быть предоставлена каждый раз, ко гда вы выполняете команду dbt.
2. Используйте переменную окружения DBT_PROFILES_DIR
для изменения расположения по умолчанию
Указание этой переменной окружения переопределяет каталог, в котором dbt ищет ваш файл profiles.yml
. Вы можете указать это, выполнив:
$ export DBT_PROFILES_DIR=path/to/directory
Продвинутое: Использование переменных окружения
Учетные данные могут быть помещены непосредственно в файл profiles.yml
или загружены из переменных окружения. Использование переменных окружения особенно полезно для производственных развертываний dbt. Вы можете найти больше информации о переменных окружения здесь.
Связанные документы
- О
profiles.yml
, чтобы узнать больше о настройке профиля.