Как предоставить профиль подключения при запуске команд 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 можно настроить следующими способами. Обратите внимание, что порядок, в котором они указаны, также указывает на их приоритет:

  1. Предоставляя флаг --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 и найдите прекрасную работу