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

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

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

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

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

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

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

Следуйте по ссылке репозитория для получения информации о зависимостях ОС.

примечание

[Model contracts](https://docs.getdbt.tech/docs/mesh/govern/model-contracts.md) не поддерживаются.

## Предварительные условия для Dremio Cloud

Перед подключением проекта к Dremio Cloud выполните следующие предварительные шаги:

* Убедитесь, что у вас есть ID проекта Sonar, который вы хотите использовать. См. [Получение ID проекта](https://docs.dremio.com/cloud/cloud-entities/projects/#obtaining-the-id-of-a-project).
* Убедитесь, что у вас есть персональный токен доступа (PAT) для аутентификации в Dremio Cloud. См. [Создание токена](https://docs.dremio.com/cloud/security/authentication/personal-access-token/#creating-a-token).
* Убедитесь, что на системе, на которой вы запускаете dbt, установлена версия Python 3.9.x или более поздняя.

## Предварительные условия для Dremio Software

* Убедитесь, что вы используете версию 22.0 или более позднюю.

* Убедитесь, что на системе, на которой вы запускаете dbt, установлена версия Python 3.9.x или более поздняя.

* Если вы хотите использовать TLS для защиты соединения между dbt и Dremio Software, настройте полное шифрование сетевого трафика (full wire encryption) в вашем кластере Dremio. Инструкции см. в разделе [Configuring Wire Encryption](https://docs.dremio.com/software/deployment/wire-encryption-config/).

## Инициализация проекта

1. Выполните команду `dbt init <project_name>`.

2. Выберите `dremio` в качестве используемой базы данных.

3. Выберите один из следующих вариантов для генерации профиля вашего проекта:

   * `dremio_cloud` для работы с Dremio Cloud
   * `software_with_username_password` для работы с кластером Dremio Software и аутентификации в кластере с использованием имени пользователя и пароля
   * `software_with_pat` для работы с кластером Dremio Software и аутентификации в кластере с использованием персонального токена доступа

Далее настройте профиль для вашего проекта.

## Профили

Когда вы инициализируете проект, вы создаете один из этих трех профилей. Вы должны настроить его перед попыткой подключения к Dremio Cloud или Dremio Software.

* Профиль для Dremio Cloud
* Профиль для Dremio Software с аутентификацией по имени пользователя/паролю
* Профиль для Dremio Software с аутентификацией через персональный токен доступа

Для описания конфигураций в этих профилях см. [Конфигурации](#profiles).

### Cloud

```yaml
[project name]:
  outputs:
    dev:
      cloud_host: api.dremio.cloud
      cloud_project_id: [project ID]
      object_storage_source: [name]
      object_storage_path: [path]
      dremio_space: [name]
      dremio_space_folder: [path]
      pat: [personal access token]
      threads: [integer >= 1]
      type: dremio
      use_ssl: true
      user: [email address]
  target: dev
```

### Software (Имя пользователя/Пароль)

```yaml
[project name]:
  outputs:
    dev:
      password: [password]
      port: [port]
      software_host: [hostname or IP address]
      object_storage_source: [name
      object_storage_path: [path]
      dremio_space: [name]
      dremio_space_folder: [path]
      threads: [integer >= 1]
      type: dremio
      use_ssl: [true|false]
      user: [username]
  target: dev
```

### Software (Персональный токен доступа)

```yaml
[project name]:
  outputs:
    dev:
      pat: [personal access token]
      port: [port]
      software_host: [hostname or IP address]
      object_storage_source: [name
      object_storage_path: [path]
      dremio_space: [name]
      dremio_space_folder: [path]
      threads: [integer >= 1]
      type: dremio
      use_ssl: [true|false]
      user: [username]
  target: dev
```

## Общие конфигурации для профилей Dremio Cloud и Dremio Software

| Конфигурация            | Обязательна? | Значение по умолчанию | Описание                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| ----------------------- | ------------ | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `type`                  | Да           | dremio                | Заполняется автоматически при создании проекта Dremio. Не изменяйте это значение.                                                                                                                                                                                                                                                                                                                                                                                                    |
| `threads`               | Да           | 1                     | Количество потоков, используемых для выполнения проекта dbt.                                                                                                                                                                                                                                                                                                                                                                                                                         |
| `object_storage_source` | Нет          | $scratch              | Имя файловой системы, в которой будут создаваться таблицы, материализованные представления, тесты и другие объекты. Псевдоним в dbt — `datalake`. Это имя соответствует имени источника в разделе **Object Storage** на странице Datasets в Dremio; на следующем изображении это "Samples":[![Путь к примерам dbt](/img/reference/dremio-setup/dbt-Samples.png?v=2 "Путь к примерам dbt")](#)Путь к примерам dbt                                                                     |
| `object_storage_path`   | Нет          | `no_schema`           | Путь в файловой системе, в котором будут создаваться объекты. По умолчанию используется корневой уровень файловой системы. Псевдоним в dbt — `root_path`. Вложенные папки в пути разделяются точками. Это значение соответствует пути в указанном месте на странице Datasets в Dremio; на следующем изображении это "samples.dremio.com.Dremio University":[![Путь к примерам dbt](/img/reference/dremio-setup/dbt-SamplesPath.png?v=2 "Путь к примерам dbt")](#)Путь к примерам dbt |
| `dremio_space`          | Нет          | `@\<username>`        | Имя пространства Dremio, в котором будут создаваться представления. Псевдоним в dbt — `database`. Это значение соответствует имени в указанном месте в разделе **Spaces** на странице Datasets в Dremio:[![Пространства dbt](/img/reference/dremio-setup/dbt-Spaces.png?v=2 "Пространства dbt")](#)Пространства dbt                                                                                                                                                                  |
| `dremio_space_folder`   | Нет          | `no_schema`           | Папка в пространстве Dremio, в которой будут создаваться представления. По умолчанию используется верхний уровень пространства. Псевдоним в dbt — `schema`. Вложенные папки разделяются точками. Это значение соответствует пути в указанном месте на странице Datasets в Dremio; на следующем изображении это `Folder1.Folder2`:[![Folder1.Folder2](/img/reference/dremio-setup/dbt-SpacesPath.png?v=2 "Folder1.Folder2")](#)Folder1.Folder2                                        |

### Конфигурации в профилях для Dremio Cloud

| Конфигурация       | Обязательна? | Значение по умолчанию | Описание                                                                                                                                                                                                    |
| ------------------ | ------------ | --------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `cloud_host`       | Да           | `api.dremio.cloud`    | Контрольная плоскость США: `api.dremio.cloud`<br />Контрольная плоскость ЕС: `api.eu.dremio.cloud`                                                                                                          |
| `user`             | Да           | Нет                   | Адрес электронной почты, используемый в качестве имени пользователя в Dremio Cloud                                                                                                                          |
| `pat`              | Да           | Нет                   | Персональный токен доступа для аутентификации. См. [Персональные токены доступа](https://docs.dremio.com/cloud/security/authentication/personal-access-token/) для получения инструкций о получении токена. |
| `cloud_project_id` | Да           | Нет                   | ID проекта Sonar, в котором выполняются преобразования.                                                                                                                                                     |
| `use_ssl`          | Да           | `true`                | Значение должно быть `true`.                                                                                                                                                                                |

### Конфигурации в профилях для Dremio Software

| Конфигурация    | Обязательна?                                        | Значение по умолчанию | Описание                                                                                                                                                                                                                                                                                                            |
| --------------- | --------------------------------------------------- | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `software_host` | Да                                                  | Нет                   | Имя хоста или IP-адрес узла-координатора кластера Dremio.                                                                                                                                                                                                                                                           |
| `port`          | Да                                                  | `9047`                | Порт конечных точек API кластера Dremio Software.                                                                                                                                                                                                                                                                   |
| `user`          | Да                                                  | Нет                   | Имя пользователя учётной записи для входа в кластер Dremio.                                                                                                                                                                                                                                                         |
| `password`      | Да, если не используется параметр pat.              | Нет                   | Пароль учётной записи для входа в кластер Dremio.                                                                                                                                                                                                                                                                   |
| `pat`           | Да, если не используются параметры user и password. | Нет                   | Персональный токен доступа для аутентификации в Dremio. Инструкции по получению токена см. в разделе [Персональные токены доступа](https://docs.dremio.com/software/security/personal-access-tokens/). Если указаны значения всех трёх параметров user, password и pat, приоритет имеет персональный токен доступа. |
| `use_ssl`       | Да                                                  | `true`                | Допустимые значения: `true` и `false`. Если установлено значение true, убедитесь, что в кластере Dremio настроено полное шифрование передаваемых данных. См. раздел [Предварительные требования для Dremio Software](#prerequisites-for-dremio-software).                                                           |
