# Подключение Databricks Совместимо с dbt v2

Платформа dbt

Адаптер dbt-databricks поддерживается командой Databricks. Команда Databricks стремится поддерживать и совершенствовать адаптер в долгосрочной перспективе, поэтому вы можете быть уверены, что эта интеграция позволит использовать лучшие возможности dbt и Databricks. Подключение к Databricks через dbt-spark объявлено устаревшим.

## О адаптере dbt-databricks

dbt-databricks совместим со следующими версиями dbt v1 в dbt с различной степенью поддержки функциональности.

| Функция        | Версии dbt                       |
| -------------- | -------------------------------- |
| dbt-databricks | Доступен начиная с dbt 1.0 в dbt |
| Unity Catalog  | Доступен начиная с dbt 1.1       |
| Модели Python  | Доступны начиная с dbt 1.3       |

Адаптер dbt-databricks предлагает:

* **Более простая настройка**
* **Лучшие значения по умолчанию:** Адаптер dbt-databricks более определен, направляя пользователей к улучшенному опыту с меньшими усилиями. Дизайнерские решения этого адаптера включают использование формата Delta по умолчанию, использование merge для инкрементных моделей и выполнение затратных запросов с Photon.
* **Поддержка Unity Catalog:** Unity Catalog позволяет пользователям Databricks централизованно управлять всеми данными, упрощая управление доступом и улучшая производительность поиска и запросов. Пользователи Databricks теперь могут получить трехуровневую иерархию данных – каталог, схема, имя модели – что решает давнюю проблему в организации и управлении данными.

Чтобы узнать, как оптимизировать производительность с помощью настроек для конкретной платформы данных в dbt, обратитесь к разделу [Настройки для Databricks](https://docs.getdbt.tech/reference/resource-configs/databricks-configs.md).

Чтобы предоставить пользователям или ролям разрешения на базу данных (права доступа и привилегии), обратитесь к странице [примеров разрешений](https://docs.getdbt.tech/reference/database-permissions/databricks-permissions.md).

## Права доступа к хранилищу для dbt v2

Пользователь или субъект-служба Databricks, от имени которого работает dbt v2, должен иметь привилегии для каталога и схем, в которых выполняются модели, а также права доступа, необходимые для запросов метаданных. Требования зависят от того, используете ли вы Unity Catalog или устаревший Hive Metastore.

### Необходимые объекты Databricks

Перед подключением следующие объекты должны существовать или быть доступны:

| Объект                              | Назначение                                           |
| ----------------------------------- | ---------------------------------------------------- |
| **Рабочая область**                 | URL вашей рабочей области Databricks (host)          |
| **SQL warehouse или кластер**       | Вычислительный ресурс (с использованием `http_path`) |
| **Каталог**                         | Каталог Unity Catalog или Hive Metastore             |
| **Схема**                           | Целевая схема в каталоге                             |
| **Пользователь или субъект-служба** | Учетная запись для аутентификации                    |

### Unity Catalog

Необходимые права доступа для Unity Catalog:

| Разрешение      | Объект                    | Назначение                                               |
| --------------- | ------------------------- | -------------------------------------------------------- |
| `USE CATALOG`   | Каталог                   | Доступ к каталогу                                        |
| `USE SCHEMA`    | Схема                     | Доступ к схемам                                          |
| `SELECT`        | Таблицы или представления | Чтение существующих данных и источников                  |
| `CREATE TABLE`  | Схема                     | Создание моделей, материализованных в виде таблиц        |
| `CREATE VIEW`   | Схема                     | Создание моделей, материализованных в виде представлений |
| `MODIFY`        | Таблицы                   | Вставка, обновление и удаление данных                    |
| `CREATE SCHEMA` | Каталог                   | Автоматическое создание схем (при необходимости)         |

### Hive Metastore

Необходимые права доступа для устаревшего Hive Metastore:

| Разрешение | Объект      | Назначение                      |
| ---------- | ----------- | ------------------------------- |
| `USAGE`    | База данных | Доступ к базе данных            |
| `SELECT`   | Таблицы     | Чтение данных                   |
| `CREATE`   | База данных | Создание таблиц и представлений |
| `MODIFY`   | Таблицы     | Изменение данных                |

### Операции с метаданными

Для основных функций dbt необходимы следующие права:

| Тип запроса                         | Используемый SQL                                                  | Необходимое разрешение       |
| ----------------------------------- | ----------------------------------------------------------------- | ---------------------------- |
| Получение схемы таблицы             | `DESCRIBE TABLE` или `DESCRIBE TABLE EXTENDED`                    | SELECT для таблицы           |
| Получение схемы таблицы (DBR 16.2+) | `DESCRIBE TABLE EXTENDED ... AS JSON`                             | SELECT для таблицы           |
| Получение списка отношений          | Запрос к `INFORMATION_SCHEMA.TABLES`                              | USE CATALOG и USE SCHEMA     |
| Проверка актуальности источника     | Запрос к `INFORMATION_SCHEMA.TABLES` для получения `last_altered` | USE CATALOG                  |
| Получение определения представления | Запрос к `SYSTEM.INFORMATION_SCHEMA.VIEWS`                        | Доступ к системному каталогу |
| Создание схем                       | `CREATE SCHEMA IF NOT EXISTS`                                     | CREATE SCHEMA для каталога   |

### Модели Python

Дополнительные разрешения для сред, использующих модели Python

| Разрешение                   | Объект                    | Назначение                       |
| ---------------------------- | ------------------------- | -------------------------------- |
| Доступ к API рабочей области | `/api/2.0/workspace/*`    | Создание каталогов для блокнотов |
| Импорт блокнотов             | Рабочая область           | Импорт блокнотов Python          |
| Выполнение заданий           | Кластер или SQL warehouse | Запуск моделей Python            |

## Поля подключения

| Поле              | Описание                                          | Примеры                                |
| ----------------- | ------------------------------------------------- | -------------------------------------- |
| Имя хоста сервера | Имя хоста аккаунта Databricks для подключения     | dbc-a2c61234-1234.cloud.databricks.com |
| HTTP Path         | HTTP путь к кластеру Databricks или SQL хранилищу | /sql/1.0/warehouses/1a23b4596cd7e8fg   |
| Catalog           | Имя каталога Databricks (необязательно)           | Production                             |

[![Настройка подключения к Databricks с помощью адаптера dbt-databricks](/img/docs/dbt-platform/platform-configuring-dbt-platform/dbt-databricks.png?v=2 "Настройка подключения к Databricks с помощью адаптера dbt-databricks")](#)Настройка подключения к Databricks с помощью адаптера dbt-databricks
