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

Настройка Firebolt

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

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

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

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

python -m pip install dbt-core dbt-firebolt

Настройка dbt-firebolt

Конфигурацию, специфичную для Firebolt, см. на странице настроек Firebolt.

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

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

Для получения дополнительной информации, включая поддержку возможностей Firebolt, см. README в GitHub и 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Обязательно. Идентификатор вашего service account.
client_secretОбязательно. Секрет, связанный с указанным client_id.
databaseОбязательно. Имя базы данных Firebolt, к которой нужно подключиться.
engine_nameОбязательно. Имя (не URL) движка Firebolt, который будет использоваться в указанной database. Это должен быть универсальный read-write движок, и он должен быть запущен. В более ранних версиях, если параметр был опущен, использовался движок по умолчанию для указанной database.
account_nameОбязательно. Указывает имя аккаунта, в рамках которого существует указанная database.
schemaРекомендуется. Строка, которая добавляется как префикс к именам генерируемых таблиц при использовании обходного решения для пользовательских схем.
threadsОбязательно. Установите большее значение для повышения производительности.
hostНеобязательно. Имя хоста для подключения. Для всех клиентов это api.app.firebolt.io, и оно будет использовано, если параметр не указан.
Loading table...

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

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

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

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

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