ClickHouse как источник Reverse ETL
Renta читает таблицы, представления или результаты SQL-запросов из ClickHouse и передаёт данные в бизнес-инструменты через пайплайны Reverse ETL. Модель данных задаёт строки для синхронизации и ключ для их сопоставления между запусками.
Перед началом работы
Подготовьте параметры подключения и пользователя ClickHouse с правами, перечи сленными ниже.
| Требование | Что подготовить |
|---|---|
| Сетевой доступ | Разрешите подключения с IP-адресов Renta к HTTP- или HTTPS-интерфейсу кластера. Обычно используются порты 8123 для HTTP и 8443 для HTTPS. Укажите порт, настроенный на вашем сервере. |
| Пользователь ClickHouse | Создайте отдельного пользователя базы данных. Renta нужны права на чтение данных модели и запись рабочих таблиц в отдельную базу на том же кластере. |
| Подключение Reverse ETL | Добавьте подключение источника Reverse ETL, даже если кластер уже используется как ETL destination. В Renta это разные подключения. |
Для Yandex Managed Service for ClickHouse по HTTPS корневой сертификат Яндекса уже включён в Renta.
Выдайте нужные привилегии
Renta хранит рабочие таблицы в служебной базе, которая в настройках называется Planner database. По умолчанию её имя renta_planner. Выдайте пользователю ClickHouse следующие привилегии:
| Привилегия | Область | Назначение |
|---|---|---|
CREATE DATABASE | *.* | Создание служебной базы. |
CREATE TABLE, DROP TABLE, INSERT, SELECT, ALTER, OPTIMIZE | Служебная база | Создание, чтение и обновление рабочих таблиц, удаление старых таблиц. |
SELECT | Базы, из которых читают модели | Предпросмотр, проверка ключа и чтение модели при синхронизации. |
Выполните эти запросы от имени пользователя с правами на управление доступом. Замените пароль и analytics своими значениями. Если служебная база будет называться иначе, замените и renta_planner.
CREATE USER renta IDENTIFIED WITH sha256_password BY 'your-strong-password';
GRANT CREATE DATABASE ON *.* TO renta;
GRANT CREATE TABLE, DROP TABLE, INSERT, SELECT, ALTER, OPTIMIZE ON renta_planner.* TO renta;
GRANT SELECT ON analytics.* TO renta;Выдайте SELECT для каждой базы, из которой читают модели. Renta выполняет CREATE DATABASE IF NOT EXISTS при сохранении подключения и начале запуска. Пользователю нужно право на этот запрос, даже если база уже существует.
Подключите ClickHouse для Reverse ETL
Понадобятся адрес HTTP-интерфейса, порт, имя базы и учётные данные пользователя.
В меню выберите Connections > Sources > Add source. В фильтре Source type выберите Reverse ETL, затем ClickHouse.

Заполните параметры подключения.
- Source name.
Название подключения в Renta. - Server hostname.
Адрес с протоколом, напримерhttps://ch.example.com. Без протокола Renta использует HTTP. - Database name.
База по умолчанию для запросов. Из неё мастер модели получает список таблиц и представлений. - Port.
Порт HTTP- или HTTPS-интерфейса. - User и Password.
Учётные данные пользователя ClickHouse. - Planner database.
Служебная база. Оставьте поле пустым дляrenta_plannerили задайте имя из латинских букв, цифр и подчёркиваний. Оно не должно начинаться с цифры.

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

Убедитесь, что подключение появилось в Connections > Sources со статусом Active.

Создайте модель данных
Откройте Tools > Context layers и нажмите New model. Одну модель могут использовать несколько пайплайнов.

В мастере вы выбираете источник, область применения, схему и метаданные. Если модель доступна AI-агентам, появляются дополнительные шаги Measures и Access.
Определите запрос
На шаге Data source выберите подключение ClickHouse. После создания модели изменить источник нельзя.

Выберите Table or view, чтобы указать объект из базы подключения. Выберите SQL query, чтобы отобрать колонки, отфильтровать строки или соединить таблицы. Используйте синтаксис ClickHouse SQL. Кнопка Format форматирует запрос.
Модель принимает один запрос на чтение. Можно использовать подзапросы, CTE и UNION. Запросы на запись и административные команды отклоняются, в том числе внутри CTE. Уберите завершающие секции FORMAT и INTO OUTFILE: формат вывода задаёт Renta.
Проверьте запрос
Нажмите Run preview, чтобы проверить колонки и значения результата. Предпросмотр показывает до 100 строк, время выполнения и объём прочитанных данны х.

Для запроса предпросмотра и отдельного запроса подсчёта строк действуют лимит чтения 10 ГиБ и серверный таймаут 60 секунд на каждый запрос. При превышении лимита чтения запрос прерывается с ошибкой. Добавьте фильтры, чтобы сократить объём чтения.
Если подсчитать все строки не удалось, отображается число строк предпросмотра, а не размер всей модели. Сам предпросмотр при этом может завершиться успешно.
Задайте область применения
На шаге Scope выберите, где будет доступна модель.

| Scope | Где доступна модель | Уникальный ключ |
|---|---|---|
| AI agents & Reverse ETL | AI-агенты и пайплайны Reverse ETL | Обязателен |
| AI agents only | AI-агенты | Необязателен |
| Reverse ETL only | Пайплайны Reverse ETL | Обязателен |
В списке Data model пайплайна появляются только модели, доступные для Reverse ETL. Область применения определяет, как можно использовать модель. Доступ пользователей к запросам через AI настраивается отдельно на шаге Access.
Выберите уникальный ключ
На шаге Schema проверьте колонки результата, примеры значений и допустимость NULL. Наведите указатель на тип, чтобы увидеть исходный тип ClickHouse.

В столбце Unique выберите одну колонку, по которой Renta будет сопоставлять строки между запусками. Её значения должны быть уникальными и не соде ржать NULL. Имя колонки должно начинаться с латинской буквы или подчёркивания и содержать только латинские буквы, цифры и подчёркивания.
Нажмите Next step, чтобы проверить ключ. Как и для предпросмотра, действуют лимит чтения 10 ГиБ и серверный таймаут 60 секунд. Если найдены и NULL, и дубликаты, сначала появится сообщение о NULL. Исключите строки без ключа или выберите другую колонку, затем повторите проверку. Если ключ состоит из нескольких колонок, сформируйте в запросе одно значение, уникальное для каждого сочетания.
Основные типы ClickHouse отображаются в Renta следующим образом:
| Тип ClickHouse | Тип в Renta |
|---|---|
Int8, Int16, Int32, UInt8, UInt16, UInt32 | int |
Int64, Int128, Int256, UInt64, UInt128, UInt256 | int64 |
Float32, Float64, BFloat16 | float |
Decimal | decimal |
String, FixedString, UUID, Enum, IPv4, IPv6 | text |
Date, Date32 | date |
DateTime, DateTime64 | datetime |
Bool | bool |
Array(T) | Массив соответствующего типа. Для Decimal используется array_float. |
Обёртки Nullable и LowCardinality не меняют отображаемый базовый тип. Сам по себе LowCardinality не означает, что колонка допускает NULL.
Для Reverse ETL преобразуйте сложные типы, например Map, Tuple, Nested, JSON, Variant и Dynamic, в String в запросе или исключите их из сопоставления полей. Это относится и к массивам неподдерживаемых типов. Метка json в схеме не означает, что исходный тип поддерживается в Reverse ETL.
Добавьте метаданные
На шаге Metadata задайте имя модели и опишите её данные.

- В Model name укажите имя, например
customer_orders. - В Description объясните, что представляет одна строка, когда использовать модель и к акие правила учитывать при работе с данными. Поддерживается Markdown.
- В Column descriptions поясните поля, которым нужен дополнительный контекст: единицы измерения, значение дат или статусов.
Auto-generate with AI предлагает описания колонок на основе запроса и выборки не более чем из десяти строк. Эти строки отправляются AI-провайдеру. Используйте функцию, только если данные можно передавать этому провайдеру, и проверьте полученные описания.
Настройте доступ для AI
Для AI agents only и AI agents & Reverse ETL заполните дополнительные шаги:
- На Measures выберите агрегации, доступные AI-ассистентам.
- На Access предоставьте доступ пользователям или группам рабочего пространства. У владельцев доступ уже есть.
Примеры и синтаксис запросов описаны на странице Context Layer.
Создайте модель
Нажмите Create model, чтобы сохранить модель и вернуться к списку.

Чтобы изменить модель, откройте её и используйте вкладки Query, Schema & key или Metadata. У моделей для AI-агентов также есть вкладки Measures и Access.
Запустите пайплайн Reverse ETL
Понадобится сохранённая модель с областью применения Reverse ETL only или AI agents & Reverse ETL.
Нажмите New pipeline, откройте вкладку Reverse ETL, выберите ClickHouse и нажмите Next step.

Выберите подключение, на котором создана модель, и нажмите Next step. В настройках назначения выберите модель в списке Data model.

Продолжите настройку назначения. В его документации описаны сопоставление полей, режимы синхронизации и расписание.
Хранение и синхронизация
Каждый новый запуск читает результат модели и использует рабочие таблицы в служебной базе для сравнения строк и учёта отправки. Эти таблицы занимают место в вашем кластере ClickHouse.
Renta сохраняет таблицы плана и отклонённых строк для текущего запуска и предыдущего, с которым сравниваются данные. Более старые рабочие таблицы удаляются. Если очистка не удалась, таблицы продолжают занимать место, но ошибка очистки не прерывает запуск. Если старые таблицы накапливаются, проверьте у пользователя привилегию DROP TABLE.
Изменение имён или типов колонок, используемых пайплайном, может вызвать полную повторную синхронизацию. Для чтения модели и построения сравнения серверный таймаут составляет 30 минут на запрос. Для остальных SQL-операций по умолчанию действует таймаут 10 минут. Это ограничения отдельных запросов, а не общей длительности запуска.
Решение проблем
По сообщению об ошибке определите, какую настройку нужно проверить.
| Проблема | Что сделать |
|---|---|
| Не удалось подключиться | Проверьте протокол, порт HTTP-интерфейса, учётные данные и доступ с IP-адресов Renta. Если ClickHouse Cloud выходит из режима ожидания, повторите попытку через минуту. |
| Нет прав на создание служебной базы | Выдайте пользователю CREATE DATABASE. Уже существующая база не отменяет эту проверку. |
| Модели нет в Data model | На вкладке Query задайте Reverse ETL only или AI agents & Reverse ETL и сохраните модель. |
| Ключ содержит NULL или дубликаты | Проверьте значения ключа в результате запроса. Исключите строки без ключа, устраните дубликаты или выберите другую колонку. |
| Неподдерживаемый тип ClickHouse | Преобразуйте поле в String, например через toString или toJSONString, либо исключите его из сопоставления полей. |
| Превышен лимит чтения или таймаут | Сократите период, добавьте фильтры или используйте заранее подготовленную таблицу либо представление. |
Что дальше
Настройте назначение или узнайте, как запрашивать модель через AI-ассистента.
Ready to get started?
Build your data pipeline today or get a personalized demo. Start free!
Need help?
Get expert support to ensure your project succeeds. We're here to help!
Feature requests?
Help shape our product! Share your ideas for new features and integrations.