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

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

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

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

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

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

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

## Подключение к DeltaStream с помощью **dbt-deltastream**

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

profiles.yml

```yaml
<profile-name>:
  target: <target-name>
  outputs:
    <target-name>:
      type: deltastream
      
      # Required parameters
      token: [ your-api-token ] # Authentication token for DeltaStream API
      database: [ your-database ] # Target database name
      schema: [ your-schema ] # Target schema name
      organization_id: [ your-org-id ] # Organization identifier
      
      # Optional parameters
      url: [ https://api.deltastream.io/v2 ] # DeltaStream API URL, defaults to https://api.deltastream.io/v2
      timezone: [ UTC ] # Timezone for operations, defaults to UTC
      session_id: [ <empty string> ] # Custom session identifier for debugging purpose
      role: [ <empty string> ] # User role
      store: [ <empty string> ] # Target store name
      compute_pool: [ <empty string> ] # Compute pool name to be used if any else use the default compute pool
```

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

| Поле              | Обязательное | Описание                                                                                                                                                       |
| ----------------- | ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `type`            | ✅           | Должно быть указано либо в `profiles.yml`, либо в файле `dbt_project.yml`. Значение должно быть `deltastream`.                                                 |
| `token`           | ✅           | Токен аутентификации для API DeltaStream. Рекомендуется хранить его в безопасном месте, предпочтительно в виде переменной окружения.                           |
| `database`        | ✅           | Имя целевой базы данных по умолчанию в DeltaStream, в которой будут создаваться модели dbt.                                                                    |
| `schema`          | ✅           | Имя целевой схемы по умолчанию в указанной базе данных.                                                                                                        |
| `organization_id` | ✅           | Идентификатор организации, который определяет, к какой организации DeltaStream вы подключаетесь.                                                               |
| `url`             | ❌           | URL API DeltaStream. Если не указан, по умолчанию используется `https://api.deltastream.io/v2`.                                                                |
| `timezone`        | ❌           | Часовой пояс для выполнения операций. Если не указан, по умолчанию используется `UTC`.                                                                         |
| `session_id`      | ❌           | Пользовательский идентификатор сессии для целей отладки. Помогает отслеживать операции в логах DeltaStream.                                                    |
| `role`            | ❌           | Роль пользователя внутри организации DeltaStream. Если не указана, используется роль по умолчанию, связанная с токеном.                                        |
| `store`           | ❌           | Имя целевого хранилища по умолчанию. Хранилища представляют собой подключения к внешним системам (Kafka, PostgreSQL и т.д.) в DeltaStream.                     |
| `compute_pool`    | ❌           | Имя пула вычислительных ресурсов, который будет использоваться для моделей, требующих вычислительных ресурсов. Если не указано, используется пул по умолчанию. |

## Рекомендации по безопасности

При настройке проекта для продакшена настоятельно рекомендуется использовать переменные окружения для хранения конфиденциальной информации, такой как токен аутентификации:

profiles.yml

```yaml
your_profile_name:
  target: prod
  outputs:
    prod:
      type: deltastream
      token: "{{ env_var('DELTASTREAM_API_TOKEN') }}"
      database: "{{ env_var('DELTASTREAM_DATABASE') }}"
      schema: "{{ env_var('DELTASTREAM_SCHEMA') }}"
      organization_id: "{{ env_var('DELTASTREAM_ORG_ID') }}"
```

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

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

### Проблемы с аутентификацией

* Убедитесь, что ваш API-токен действителен и срок его действия не истёк
* Убедитесь, что у токена есть необходимые разрешения для целевой организации
* Проверьте, что `organization_id` соответствует вашей организации DeltaStream
