Перейти к основному содержанию
В предыдущих руководствах вы выполняли запросы к открытым табличным форматам напрямую и загружали данные в MergeTree для быстрой аналитики. Во многих архитектурах данные также должны перемещаться в обратном направлении — из ClickHouse обратно в открытые табличные форматы. Обычно это требуется в двух сценариях:
  • Выгрузка в долгосрочное хранилище - Данные поступают в ClickHouse как слой Real-time аналитики, обеспечивая работу панелей мониторинга и операционной отчетности. Когда данные выходят за пределы окна актуальности, их можно записать в Iceberg в объектном хранилище для надежного и экономичного долговременного хранения в интероперабельном формате.
  • Reverse ETL - Преобразования, агрегации и обогащение, выполняемые в ClickHouse, создают производные наборы данных, которые должны использоваться downstream-инструментами и другими командами. Запись этих результатов в таблицы Iceberg делает их доступными для всей экосистемы данных.
В обоих случаях INSERT INTO SELECT позволяет переносить данные из таблиц ClickHouse в таблицы Iceberg, хранящиеся в объектном хранилище.
Запись в открытые табличные форматы в настоящее время поддерживается только для таблиц Iceberg. Частичная поддержка таблиц Delta Lake находится в разработке. Таблицы не должны управляться через каталог.

Подготовьте исходный набор данных

В этом руководстве мы будем использовать набор данных UK Price Paid — открытый реестр всех сделок с жилой недвижимостью в Англии и Уэльсе.

Создайте и заполните таблицу MergeTree

Заполните таблицу напрямую из общедоступного CSV-источника:

Запись данных в таблицу Iceberg

Создайте таблицу Iceberg

Чтобы записывать данные в Iceberg, создайте таблицу с помощью движка таблицы IcebergS3. Обратите внимание, что по сравнению с исходной таблицей MergeTree схему нужно упростить. ClickHouse поддерживает более богатую систему типов, чем Iceberg и лежащие в его основе файлы Parquet, поэтому такие типы, как Enum, LowCardinality и UInt8, в Iceberg не поддерживаются и должны быть приведены к совместимым типам.

Вставка части данных

Используйте INSERT INTO SELECT, чтобы записать данные из таблицы MergeTree в таблицу Iceberg. В этом примере мы записываем только транзакции из Лондона:

Выполните запрос к таблице Iceberg

Теперь данные хранятся в формате Iceberg в Объектном хранилище, и к ним можно обращаться из ClickHouse — или из любого другого инструмента, поддерживающего Iceberg:

Запись агрегированных результатов

Таблицы Iceberg предназначены не только для хранения необработанных строк. Они также могут содержать результаты агрегирования и преобразований — результаты ETL-процессов, выполняемых внутри ClickHouse. Это удобно для публикации заранее вычисленных сводных данных в lakehouse для дальнейшего использования.

Создайте таблицу Iceberg для агрегированных данных

Вставка агрегированных данных

Вычислите среднюю стоимость недвижимости по городам и запишите результаты напрямую в Iceberg:

Выполните запрос к агрегированной таблице

Другие инструменты — и другие экземпляры ClickHouse — теперь могут читать этот заранее вычисленный набор данных:
Последнее изменение 10 июня 2026 г.