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

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

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

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

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

Установите адаптер с помощью `pip`: python -m pip install dbt-firebolt

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

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

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

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

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

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

Подключение к 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Обязательный параметр. Имя (не 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 Sharar задаёт schema=sh, а Eric в своём — schema=er. Когда каждый из них запускает модель customers, в базе данных создаются таблицы с именами sh_customers и er_customers соответственно. При запуске dbt в production вы будете использовать ещё один файл profiles.yml со строковым значением по вашему выбору.

Нашли ошибку?

0
Loading