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

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

* **Поддерживается**: Exasol
* **Авторы**: Torsten Glunde, Ilija Kutle
* **Репозиторий GitHub**: [exasol/dbt-exasol](https://github.com/exasol/dbt-exasol) [![](https://img.shields.io/github/stars/exasol/dbt-exasol?style=for-the-badge)](https://github.com/exasol/dbt-exasol)
* **Пакет PyPI**: `dbt-exasol` [![](https://badge.fury.io/py/dbt-exasol.svg)](https://badge.fury.io/py/dbt-exasol)
* **Канал Slack**: [n/a]()
* **Поддерживаемая версия dbt**: v1.8.0 и новее
* **Поддержка dbt**: Not Supported
* **Минимальная версия платформы данных**: Exasol 6.x

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

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

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

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

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

#### Аутентификация по имени пользователя и паролю

Настройте профиль dbt для работы с Exasol:

##### Параметры подключения к Exasol

profiles.yml

```yaml
dbt-exasol:
  target: dev
  outputs:
    dev:
      type: exasol
      threads: 1
      dsn: HOST:PORT
      user: USERNAME
      password: PASSWORD
      dbname: db
      schema: SCHEMA
```

#### Аутентификация OpenID (Exasol SaaS)

В средах Exasol SaaS для аутентификации можно использовать токены OpenID вместо имени пользователя и пароля:

profiles.yml

```yaml
dbt-exasol:
  target: dev
  outputs:
    dev:
      type: exasol
      threads: 1
      dsn: HOST:PORT
      user: USERNAME
      access_token: YOUR_ACCESS_TOKEN  # или используйте refresh_token
      dbname: db
      schema: SCHEMA
      encryption: True  # обязательно для SaaS
```

* **`access_token`** — Персональный токен доступа для аутентификации OpenID
* **`refresh_token`** — Токен обновления для аутентификации OpenID (альтернатива `access_token`)

к сведению

Используйте либо `access_token`, либо `refresh_token`, но не оба одновременно. При использовании аутентификации OpenID в Exasol SaaS требуется шифрование TLS.

#### Необязательные параметры

* **`connection_timeout`** — по умолчанию используется значение по умолчанию из pyexasol
* **`socket_timeout`** — по умолчанию используется значение по умолчанию из pyexasol
* **`query_timeout`** — по умолчанию используется значение по умолчанию из pyexasol
* **`compression`** — значение по умолчанию: False
* **`encryption`** — значение по умолчанию: True. Включает шифрование SSL/TLS для защищённых подключений. Обязательно для Exasol SaaS
* **`validate_server_certificate`** — значение по умолчанию: True. Проверяет сертификат SSL/TLS, если шифрование включено. Устанавливайте False только при разработке и тестировании с самоподписанными сертификатами (не рекомендуется для производственной среды)
* **`protocol_version`** — значение по умолчанию: v3
* **`row_separator`** — значение по умолчанию: CRLF для Windows, LF для остальных систем
* **`timestamp_format`** — значение по умолчанию: `YYYY-MM-DDTHH:MI:SS.FF6`

Проверка сертификатов SSL/TLS

По умолчанию dbt-exasol проверяет сертификаты SSL/TLS, если `encryption=True`. При разработке и тестировании с самоподписанными сертификатами можно выбрать один из следующих вариантов:

* Установить `validate_server_certificate: False` (не рекомендуется для производственной среды)
* Указать отпечаток сертификата в DSN: `dsn: myhost/FINGERPRINT:8563`
* Использовать `dsn: myhost/nocertcheck:8563`, чтобы пропустить проверку (только для тестирования)

Дополнительные сведения см. в [документации PyExasol по безопасности](https://exasol.github.io/pyexasol/master/user_guide/configuration/security.html).
