Как предоставить профиль подключения при запуске команд dbt
Инструмент построения данных (dbt) является одним из самых горячих (относительно) недавних дополнений к современным стекам данных. dbt предлагает как инструмент командной строки (dbt-core
), так и облачный инструмент (dbt Cloud), который является платным сервисом, где вы можете размещать и запускать свои проекты dbt.
При использовании интерфейса командной строки пользователи обычно жалуются на ошибку, информирующую их о том, что не удалось найти указанное имя профиля.
ERROR: Runtime Error Could not find profile named 'profile_name' Encountered an error: Runtime Error Could not run dbt"
В этом кратком руководстве мы обсудим профили в контексте dbt и их назначение. Мы также предоставим рекомендации по правильному определению профилей и их связыванию с конкретным проектом dbt. Кроме того, мы покажем вам, как устранить ошибку, которая может возникнуть при выполнении команд через dbt CLI.
Что такое профили в инструменте построения данных
dbt — это инструмент, способный выполнять SQL-запросы для применения определенных преобразований в системе, содержащей данные, включая базы данных (например, Postgres) и хранилища данных (например, BigQuery). Если вы используете интерфейс командной строки инструмента (например, dbt-core
), вам нужно будет указать детали подключения, чтобы указать dbt, где он должен найти данные и выполнить указанные запросы.
Детали подключения должны быть указаны в файле с именем profiles.yml
, который представляет собой файл YAML, состоящий из одного или нескольких профилей, каждый из которых соответствует одному соединению. Вот пример профиля подключения с некоторыми встроенными комментариями, которые, я надеюсь, прояснят, какую роль играет каждый отдельный параметр:
# profiles.yml postgres_connection: # This is the name of the connection target: dev # The default target to be used (must be one from `outputs`) outputs: dev: # This is the name of the target type: postgres # Connection type host: localhost user: postgres password: mypass port: 5432 dbname: mydb schema: myschema # The default schema that dbt will build objects in threads: 4 # The number of threads the dbt project will run on prod: type: postgres host: production-host user: postgres password: mypass port: 5432 dbname: mydb schema: myschema threads: 4
Один профиль состоит из одной или нескольких целей вместе с выбранной целью по умолчанию. Причина, по которой dbt позволяет определять более одной цели в одном профиле, заключается в том, чтобы поощрять пользователей поддерживать отдельные среды (например, development
и production
).
Каждое целевое определение указывает тип системы, к которой нам нужно подключиться, а также учетные данные для подключения и любые дополнительные параметры конфигурации, специфичные для dbt (такие как threads
).
Учитывая, что файл profiles.yml
может содержать более одного профиля, нам каким-то образом нужно указать dbt, какое соединение ему нужно использовать. На самом деле это делается в файле проекта dbt_project.yml
, который должен находиться в корневом каталоге проекта.
# dbt_project.yml file name: 'my_dbt_project' profile: 'postgres_connection' ...
Почему вы видите эту ошибку и как ее исправить
Теперь, когда мы лучше понимаем, как профили соединения dbt работают со спецификацией проекта, гораздо проще отладить и объяснить возникновение ошибки времени выполнения, указывающей, что профиль не может быть найден.
ERROR: Runtime Error Could not find profile named 'profile_name' Encountered an error: Runtime Error Could not run dbt"
Проверка ваших файлов dbt_project.yml и profiles.yml
Если вы видите эту ошибку, первое, что вам нужно проверить, это проверить, ссылается ли параметр profile
в dbt_project
на допустимое имя профиля, указанное в файле profiles.yml
.
Также убедитесь, что определения в файле profiles.yml
верны.
Укажите действительный каталог профилей
Всякий раз, когда вы запускаете операцию dbt с использованием интерфейса командной строки, инструмент должен будет вывести файл profiles.yml
, в котором находятся учетные данные для подключения. Поэтому он попытается найти profiles.yml
в указанном родительском каталоге профилей.
dbt завершится ошибкой, указанной выше, если он не сможет определить правильный родительский каталог профилей и, следовательно, не сможет получить сведения о соединении из имени профиля, указанного в файле dbt_project.yml
.
Родительский каталог для файла profiles.yml
можно настроить следующими способами. Обратите внимание, что порядок, в котором они указаны, также указывает на их приоритет:
- Предоставляя флаг
--profiles-dir
при запуске dbt CLI
$ dbt run --profiles-dir /path/to/directory/containing/profiles.yml
2. Путем экспорта/указания переменной окружения DBT_PROFILES_DIR
$ export DBT_PROFILES_DIR=/path/to/directory/containing/profiles.yml
3. Если ни один из двух вышеперечисленных вариантов не указан, dbt будет искать в текущем рабочем каталоге.
4. Наконец, если ничего из вышеперечисленного не применимо, dbt вместо этого будет искать файл в каталоге ~/.dbt/
.
Последние мысли
Если вы работаете в области разработки данных или аналитики, я настоятельно рекомендую инструмент построения данных (dbt) — технологию, которая может помочь вам эффективно управлять моделями данных, улучшать качество данных и автоматизировать способ документирования ваших данных (включая как данные, так и данные). каталог и родословная).
Если вы ищете быструю локальную настройку для dbt, которая поможет вам поэкспериментировать с самим инструментом, я настоятельно рекомендую начать с одного из моих проектов dbt под названием dbt-dummy
. Это полный контейнерный проект dbt, который дает вам доступ к данным, расположенным в экземпляре Postgres.
В этом кратком руководстве мы обсудили использование профилей в контексте dbt и предоставили рекомендации, которые, как мы надеемся, помогут пользователям устранить ошибки, о которых сообщается, когда инструмент CLI не может найти профиль проекта.
👉 Стань участником и читай все истории на Medium. Ваш членский взнос напрямую поддерживает меня и других писателей, которых вы читаете. Вы также получите полный доступ ко всем историям на Medium.
👇Похожие статьи, которые вам также могут понравиться👇
Повышение уровня кодирования
Спасибо, что являетесь частью нашего сообщества! Перед тем, как ты уйдешь:
- 👏 Хлопайте за историю и подписывайтесь на автора 👉
- 📰 Смотрите больше контента в публикации Level Up Coding
- 💰 Бесплатный курс собеседования по программированию ⇒ Просмотреть курс
- 🔔 Подписывайтесь на нас: Twitter | ЛинкедИн | "Новостная рассылка"
🚀👉 Присоединяйтесь к коллективу талантов Level Up и найдите прекрасную работу