Перейти к основному содержимому

Настройка Firebolt

Некоторая основная функциональность может быть ограничена. Если вы заинтересованы в участии, ознакомьтесь с исходным кодом репозитория, указанного ниже.

  • Поддерживается: Firebolt
  • Авторы: Firebolt
  • Репозиторий на GitHub: firebolt-db/dbt-firebolt
  • Пакет на PyPI: dbt-firebolt
  • Канал в Slack: #db-firebolt
  • Поддерживаемая версия dbt Core: v1.1.0 и новее
  • Поддержка dbt Cloud: Не поддерживается
  • Минимальная версия платформы данных: n/a

Установка dbt-firebolt

Используйте pip для установки адаптера. До версии 1.8 установка адаптера автоматически устанавливала dbt-core и любые дополнительные зависимости. Начиная с версии 1.8, установка адаптера не устанавливает автоматически dbt-core. Это связано с тем, что адаптеры и версии dbt Core были разделены, и мы больше не хотим перезаписывать существующие установки dbt-core. Используйте следующую команду для установки:

Конфигурация dbt-firebolt

Для конфигурации, специфичной для Firebolt, пожалуйста, обратитесь к конфигурациям Firebolt.

Для получения другой информации, включая поддержку функций Firebolt, см. GitHub README и changelog.

Подключение к Firebolt

Чтобы подключиться к Firebolt из dbt, вам нужно добавить профиль в ваш файл profiles.yml. Профиль Firebolt соответствует следующему синтаксису:

profiles.yml
<profile-name>:
target: <target-name>
outputs:
<target-name>:
type: firebolt
client_id: "<id>"
client_secret: "<secret>"
database: "<database-name>"
engine_name: "<engine-name>"
account_name: "<account-name>"
schema: <tablename-prefix>
threads: 1
#опциональные поля
host: "<hostname>"

Описание полей профиля Firebolt

Чтобы указать значения в качестве переменных окружения, используйте формат {{ env_var('<variable_name>' }}. Например, {{ env_var('DATABASE_NAME' }}.

ПолеОписание
typeЭто поле должно быть включено либо в profiles.yml, либо в файл dbt_project.yml. Должно быть установлено значение firebolt.
client_idОбязательно. Ваш идентификатор учетной записи службы.
client_secretОбязательно. Секрет, связанный с указанным client_id.
databaseОбязательно. Имя базы данных Firebolt, к которой нужно подключиться.
engine_nameОбязательно в версии 0.21.10 и позже. Опционально в более ранних версиях. Имя (не URL) движка Firebolt, который будет использоваться в указанной database. Это должен быть универсальный движок для чтения и записи, и он должен быть запущен. Если не указано в более ранних версиях, используется движок по умолчанию для указанной database.
account_nameОбязательно. Указывает имя учетной записи, под которой существует указанная database.
schemaРекомендуется. Строка, добавляемая в качестве префикса к именам сгенерированных таблиц при использовании обходного пути для пользовательских схем.
threadsОбязательно. Установите большее значение для повышения производительности.
hostОпционально. Имя хоста подключения. Для всех клиентов это api.app.firebolt.io, которое будет использоваться, если не указано.

Устранение неполадок подключения

Если у вас возникают проблемы с подключением к Firebolt из dbt, убедитесь, что выполнены следующие условия:

  • У вас должны быть достаточные права доступа к движку и базе данных.
  • Ваша учетная запись службы должна быть привязана к пользователю.
  • Движок должен быть запущен.

Поддержка параллельной разработки

В dbt схемы баз данных используются для разделения сред разработчиков, чтобы параллельная разработка не вызывала конфликтов имен . Однако Firebolt в настоящее время не поддерживает схемы баз данных (это в планах). Чтобы обойти это, мы рекомендуем добавить следующий макрос в ваш проект. Этот макрос будет использовать поле schema из вашего файла profiles.yml в качестве префикса имени таблицы.

-- macros/generate_alias_name.sql
{% macro generate_alias_name(custom_alias_name=none, node=none) -%}
{%- if custom_alias_name is none -%}
{{ node.schema }}__{{ node.name }}
{%- else -%}
{{ node.schema }}__{{ custom_alias_name | trim }}
{%- endif -%}
{%- endmacro %}

Для примера того, как это работает, предположим, что Шахар и Эрик работают над одним и тем же проектом.

В своем .dbt/profiles.yml Шахар устанавливает schema=sh, тогда как Эрик устанавливает schema=er. Когда каждый из них запускает модель customers, модели будут размещены в базе данных как таблицы с именами sh_customers и er_customers соответственно. При запуске dbt в производственной среде вы бы использовали еще один profiles.yml с выбранной вами строкой.

0