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

Локальная разработка

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

* **Поддерживается**: Firebolt
* **Авторы**: Firebolt
* **Репозиторий GitHub**: [firebolt-db/dbt-firebolt](https://github.com/firebolt-db/dbt-firebolt) [![](https://img.shields.io/github/stars/firebolt-db/dbt-firebolt?style=for-the-badge)](https://github.com/firebolt-db/dbt-firebolt)
* **Пакет PyPI**: `dbt-firebolt` [![](https://badge.fury.io/py/dbt-firebolt.svg)](https://badge.fury.io/py/dbt-firebolt)
* **Канал Slack**: [#db-firebolt](https://getdbt.slack.com/archives/C03K2PTHHTP)
* **Поддерживаемая версия dbt**: v1.1.0 и новее
* **Поддержка dbt**: Не поддерживается
* **Минимальная версия платформы данных**: n/a

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

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

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

Конфигурацию, специфичную для Firebolt, см. на странице [настроек Firebolt.](https://docs.getdbt.tech/reference/resource-configs/firebolt-configs.md)

Для получения другой информации, включая поддержку функций Firebolt, см. [GitHub README](https://github.com/firebolt-db/dbt-firebolt/blob/main/README.md) и [changelog](https://github.com/firebolt-db/dbt-firebolt/blob/main/CHANGELOG.md).

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

Для получения дополнительной информации, включая поддержку возможностей Firebolt, см. [README в GitHub](https://github.com/firebolt-db/dbt-firebolt/blob/main/README.md) и [changelog](https://github.com/firebolt-db/dbt-firebolt/blob/main/CHANGELOG.md).

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

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

Чтобы подключиться к Firebolt из dbt, добавьте [профиль](https://docs.getdbt.tech/docs/local/profiles.yml.md) в файл `profiles.yml`. Профиль Firebolt имеет следующий синтаксис:

profiles.yml

```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`     | Обязательный параметр. Идентификатор вашей [сервисной учётной записи](https://docs.firebolt.io/godocs/Guides/managing-your-organization/service-accounts.html).                                                                                                                                                                                                     |
| `client_secret` | Обязательный параметр. Секрет, связанный с указанным `client_id`.                                                                                                                                                                                                                                                                                                   |
| `database`      | Обязательный параметр. Имя базы данных Firebolt, к которой нужно подключиться.                                                                                                                                                                                                                                                                                      |
| `engine_name`   | Обязательный параметр. Имя (не URL) вычислительного движка Firebolt, который будет использоваться в указанной базе данных `database`. Это должен быть движок общего назначения с поддержкой чтения и записи, и он должен быть запущен. В более ранних версиях, если этот параметр не указан, используется движок по умолчанию для указанной базы данных `database`. |
| `account_name`  | Обязательный параметр. Указывает имя аккаунта, в котором находится указанная база данных `database`.                                                                                                                                                                                                                                                                |
| `schema`        | Рекомендуемый параметр. Строка, добавляемая в качестве префикса к именам создаваемых таблиц при использовании [обходного решения для пользовательских схем](https://docs.getdbt.tech/docs/local/connect-data-platform/firebolt-setup.md#supporting-concurrent-development).                                                                                        |
| `threads`       | Обязательный параметр. Установите более высокое значение для повышения производительности.                                                                                                                                                                                                                                                                          |
| `host`          | Необязательный параметр. Имя хоста для подключения. Для всех клиентов это `api.app.firebolt.io`; это значение используется, если параметр не указан.                                                                                                                                                                                                                |

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

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

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

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

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

```sql
-- 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` со строковым значением по вашему выбору.
