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

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

Плагин, поддерживаемый поставщиком

Некоторая [основная функциональность](https://github.com/pingcap/dbt-tidb/blob/main/README.md#supported-features) может быть ограничена. Если вы заинтересованы в участии, ознакомьтесь с репозиторием исходного кода, указанным ниже.

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

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

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

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

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

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

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

Настройте ваш профиль dbt для использования TiDB:

#### Профиль подключения к TiDB

profiles.yml

```yaml
dbt-tidb:
  target: dev
  outputs:
    dev:
      type: tidb
      server: 127.0.0.1
      port: 4000
      schema: database_name
      username: tidb_username
      password: tidb_password

      # необязательно
      retries: 3 # по умолчанию 1
```

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

| Опция    | Описание                                           | Обязательно?  | Пример             |
| -------- | -------------------------------------------------- | ------------- | ------------------ |
| type     | Конкретный адаптер для использования               | Обязательно   | `tidb`             |
| server   | Сервер (имя хоста) для подключения                 | Обязательно   | `yourorg.tidb.com` |
| port     | Порт для использования                             | Обязательно   | `4000`             |
| schema   | Укажите схему (базу данных) для построения моделей | Обязательно   | `analytics`        |
| username | Имя пользователя для подключения к серверу         | Обязательно   | `dbt_admin`        |
| password | Пароль для аутентификации на сервере               | Обязательно   | `awesome_password` |
| retries  | Количество попыток после неудачного подключения    | Необязательно | `по умолчанию 1`   |

## Привилегии пользователя базы данных

Ваш пользователь базы данных должен иметь некоторые возможности для чтения или записи, такие как `SELECT`, `CREATE` и так далее. Вы можете найти помощь [здесь](https://docs.pingcap.com/tidb/v4.0/privilege-management) по управлению привилегиями TiDB.

| Необходимая привилегия |
| ---------------------- |
| SELECT                 |
| CREATE                 |
| CREATE TEMPORARY TABLE |
| CREATE VIEW            |
| INSERT                 |
| DROP                   |
| SHOW DATABASE          |
| SHOW VIEW              |
| SUPER                  |

## Поддерживаемые функции

| TiDB 4.X | TiDB 5.0 \~ 5.2 | TiDB >= 5.3 | Функция                        |
| -------- | --------------- | ----------- | ------------------------------ |
| ✅       | ✅              | ✅          | Материализация таблиц          |
| ✅       | ✅              | ✅          | Материализация представлений   |
| ❌       | ❌              | ✅          | Инкрементальная материализация |
| ❌       | ✅              | ✅          | Эфемерная материализация       |
| ✅       | ✅              | ✅          | Seeds                          |
| ✅       | ✅              | ✅          | Sources                        |
| ✅       | ✅              | ✅          | Пользовательские тесты данных  |
| ✅       | ✅              | ✅          | Генерация документации         |
| ❌       | ❌              | ✅          | Снимки                         |
| ✅       | ✅              | ✅          | Grant                          |
| ✅       | ✅              | ✅          | Повторное подключение          |

**Примечание:**

* TiDB 4.0 \~ 5.0 не поддерживает [CTE](https://docs.pingcap.com/tidb/dev/sql-statement-with), поэтому следует избегать использования `WITH` в SQL-коде.
* TiDB 4.0 \~ 5.2 не поддерживает создание [временных таблиц или представлений](https://docs.pingcap.com/tidb/v5.2/sql-statement-create-table#:~:text=sec\)-,MySQL%20compatibility,-TiDB%20does%20not).
* TiDB 4.X не поддерживает использование SQL-функций в `CREATE VIEW`, поэтому избегайте их использования в SQL-коде. Подробнее об этом можно узнать [здесь](https://github.com/pingcap/tidb/pull/27252).
