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

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

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

Некоторая основная функциональность может отличаться. Если вы хотите сообщить об ошибке, запросить функцию или внести свой вклад, вы можете посетить связанный репозиторий и открыть задачу.

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

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

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

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

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

## Подключение к Materialize

После того как вы создали [аккаунт Materialize](https://materialize.com/register/), адаптируйте ваш `profiles.yml` для подключения к вашей инстанции, используя следующую конфигурацию профиля:

\~/.dbt/profiles.yml

```yaml
materialize:
  target: dev
  outputs:
    dev:
      type: materialize
      host: [host]
      port: [port]
      user: [user@domain.com]
      pass: [password]
      dbname: [database]
      cluster: [cluster] # по умолчанию 'default'
      schema: [dbt schema]
      sslmode: require
      keepalives_idle: 0 # по умолчанию: 0, что означает системное значение по умолчанию
      connect_timeout: 10 # по умолчанию: 10 секунд
      retries: 1 # по умолчанию: 1, повтор при ошибке/тайм-ауте при открытии соединений
```

### Конфигурации

`cluster`: По умолчанию используется [кластер](https://materialize.com/docs/overview/key-concepts/#clusters) для поддержания материализованных представлений или индексов. [`default` кластер](https://materialize.com/docs/sql/show-clusters/#default-cluster) предустановлен в каждой среде, но мы рекомендуем создавать выделенные кластеры для изоляции рабочих нагрузок в вашем проекте dbt (например, `staging` и `data_mart`).

`keepalives_idle`: Количество секунд до отправки пинга для поддержания активного соединения с Materialize. Если вы сталкиваетесь с ошибкой `SSL SYSCALL error: EOF detected`, попробуйте уменьшить значение [keepalives\_idle](https://docs.getdbt.tech/docs/local/connect-data-platform/postgres-setup.md#keepalives_idle), чтобы предотвратить закрытие соединения со стороны базы данных.

Чтобы протестировать соединение с Materialize, выполните:

```text
dbt debug
```

Если вывод гласит "All checks passed!", вы готовы к работе! Ознакомьтесь с [руководством по dbt и Materialize](https://materialize.com/docs/guides/dbt/), чтобы узнать больше и начать работу.

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

### Материализации

Поскольку Materialize оптимизирован для преобразований потоковых данных, а ядро dbt построено вокруг пакетной обработки, адаптер `dbt-materialize` реализует несколько пользовательских типов материализации:

| Тип                | Поддерживается? | Подробности                                                                                                                                                                                                                                                                                         |
| ------------------ | --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `source`           | ДА              | Создает [источник](https://materialize.com/docs/sql/create-source/).                                                                                                                                                                                                                                |
| `view`             | ДА              | Создает [представление](https://materialize.com/docs/sql/create-view/#main).                                                                                                                                                                                                                        |
| `materializedview` | ДА              | Создает [материализованное представление](https://materialize.com/docs/sql/create-materialized-view/#main).                                                                                                                                                                                         |
| `table`            | ДА              | Создает [материализованное представление](https://materialize.com/docs/sql/create-materialized-view/#main). (Поддержка реальных таблиц ожидается [#5266](https://github.com/MaterializeInc/materialize/issues/5266))                                                                                |
| `sink`             | ДА              | Создает [синк](https://materialize.com/docs/sql/create-sink/#main).                                                                                                                                                                                                                                 |
| `ephemeral`        | ДА              | Выполняет запросы с использованием CTE.                                                                                                                                                                                                                                                             |
| `incremental`      | НЕТ             | Используйте вместо этого `materializedview` материализация. Материализованные представления всегда будут возвращать актуальные результаты без ручных или настроенных обновлений. Для получения дополнительной информации ознакомьтесь с [документацией Materialize](https://materialize.com/docs/). |

### Индексы

Материализованные представления (`materializedview`), представления (`view`) и источники (`source`) могут иметь список [`индексов`](https://docs.getdbt.tech/reference/resource-configs/materialize-configs.md#indexes).

### Seeds

Запуск [`dbt seed`](https://docs.getdbt.tech/reference/commands/seed.md) создаст статическое материализованное представление из CSV-файла. Вы не сможете добавить или обновить это представление после его создания.

### Тесты

Запуск [`dbt test`](https://docs.getdbt.tech/reference/commands/test.md) с опциональным флагом `--store-failures` или конфигурацией [`store_failures`](https://docs.getdbt.tech/reference/resource-configs/store_failures.md) создаст материализованное представление для каждого настроенного теста, которое может отслеживать неудачи с течением времени.

## Ресурсы

* [Руководство по dbt и Materialize](https://materialize.com/docs/guides/dbt/)
