+7 495 152-72-55 info@internet-expert.ru

Загрузка и обработка данных для аналитики в Clickhouse

Разработка функционала загрузки данных для аналитики в кластер ClickHouse из разнородных источников с фоновой дедупликацией данных

Аналитика Дедупликация Docker-контейнеры YMS Terraform Ansible Clickhouse
Дата публикации: 02.07.2026 5 минут 41

Проблема:

В рамках проекта требовалось организовать централизованную загрузку данных для аналитики из нескольких источников в единую систему хранения для одного из крупнейших медиаагентств, входящее в ТОП-10 рейтинга АКАР. Основной проблемой было отсутствие унифицированного подхода к обработке файлов разных форматов, а также необходимость исключить дублирование данных при их поступлении из различных каналов.

Решение:

Было принято решение построить единый конвейер загрузки данных с предварительным приведением всех входящих файлов к формату CSV для последующей пакетной загрузки в таблицы ClickHouse.

Дано:

Данные для загрузки должны попадать в ClickHouse из 3-х источников:

  • Csv файлы, выгружаемые на FTP из 1С;
  • Xlsx файлы, получаемые из отчетов DCM/DFA Google;
  • Xlsx/csv файлы, экспортируемые аналитиками на ftp.

Так как данные различных источников могут дублировать друг друга, реализовали дедупликацию данных через движок ReplacingMergeTree с определением ключевых полей для каждой таблицы.

Как работает система

На первом этапе XLSX файлы преобразуются в формат CSV. Нестандартные XLSX обрабатываются напрямую из XML структуры внутри ZIP архива, стандартные XLSX конвертируются в CSV с использованием xlsx2csv. Далее обработчик CSV файлов определяет по метаданным необходимый класс импортера и инициирует задачу на загрузку файла.

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

Для реализации конвейерной обработки процесс загрузки был разделен на независимые микросервисы, работающие в Docker контейнерах. На каждом этапе выполняются проверки данных, форматов и корректности обработки. В случае ошибок информация отправляется в Telegram-каналы администраторов и в логи для оперативного реагирования и исправления.

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

Инфраструктура для эксплуатации коннекторов запущена в Yandex Cloud. Для исполнения задач по расписанию и логирования результатов используется автоматизация в Jenkins. В качестве базы данных применяется решение Yandex Cloud - Yandex Managed Service for ClickHouse. Для работы с сетевой инфраструктурой, виртуальными машинами и управляемыми базами данных реализованы скрипты автоматизации Terraform и Ansible.

Результат

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

Автор статьи
Алексей Васильев
Руководитель проектов "Интернет-Эксперт"

Столкнулись с подобной задачей? Поможем решить!

Вернуться назад
Аналитика Дедупликация Docker-контейнеры YMS Terraform Ansible Clickhouse
Хотите так же? Напишите нам и наши менеджеры свяжутся с вами. Связаться