Практикум по ClickHouse — от событий к отчёту, которому можно доверять
- практикум
- ClickHouse
- SQL
- данные

Два отчёта по одним отгрузкам показывают разные суммы. Один считает события напрямую, другой читает заранее подготовленную витрину. Пока данные приходили один раз и по порядку, результаты совпадали. Но источник повторил доставку, и цифры разошлись.
Такие ситуации вы разбираете в практикуме SoftPractice «Основы событийной аналитики на ClickHouse». Он рассчитан на разработчиков, которые уже знают SQL и хотят построить аналитический контур приложения: от хранения событий до точного отчёта, стоимость которого можно объяснить замерами.
Главный навык здесь — сохранять смысл показателей, когда растёт история, меняется загрузка и появляются новые требования. Для этого вы выбираете схему и запросы, проверяете их на своих данных и объясняете, почему решение работает в заданных условиях.
Один проект, новые требования
Мебельная фабрика «Спинка» продаёт продукцию через сеть дилеров. История отгрузок накопилась за несколько лет, а аналитические запросы стали мешать оперативной базе. Команда выносит отчёты в ClickHouse.
Вам передают готовый экспорт событий. Настраивать исходную базу и доставку изменений из неё не понадобится: ваша часть — хранение, загрузка и аналитические запросы.
Команде продаж нужны суточные показатели по моделям мебели. Но один заказ могут отгружать частями, а одна отгрузка содержит несколько позиций. Количество строк в экспорте ещё не отвечает на вопрос, сколько было отгрузок. Сначала нужно определить, что именно считать.
Затем история растёт, приходят архивные выгрузки, повторы и опоздавшие события. Каждый следующий урок добавляет требование к вашему решению. Проект постепенно проходит путь от сохранённых фактов до витрины — заранее подготовленных агрегатов для повторяющегося отчёта.
От первого запроса до витрины на истории
В маршруте девять заданий, объединённых в четыре этапа.
1. Познакомиться с ClickHouse и получить точный отчёт. Вводное задание начинается с готовой таблицы показаний датчиков: вы запускаете окружение, пишете запросы и наблюдаете, сколько строк читает база. Затем переходите к отгрузкам «Спинки»: проектируете хранение событий, сохраняете согласованную цену и время, определяете единицу счёта и границы отчётного периода.
2. Измерить чтение и загрузку. Правильный запрос может читать слишком большую долю истории. Вы исследуете, как организация данных меняет объём чтения. После этого сравниваете варианты размера партии и разбиения таблицы на партиции: как они влияют на вставки и создание частей — отдельных фрагментов хранения ClickHouse. Выбор нужно обосновать замерами, сохранив правильный ответ и ранее достигнутую стоимость чтения.
3. Сохранить показатели при повторах и ввести витрину. Сначала вы обеспечиваете точный отчёт при повторной доставке и позднем поступлении событий. Затем создаёте витрину, которая обновляется при вставках, и сверяете её с прямым расчётом по событиям. Наконец, вводите витрину на накопленной истории и делаете её наполнение повторяемым. В этом учебном сценарии внешняя запись остановлена, а доступный читателю отчёт должен оставаться полным во время работ.
4. Перенести навык в другой проект. Финальное задание посвящено событиям обработки фоновых заданий. У нового домена свои сущности и определения показателей: решения о хранении, повторах и витрине вы принимаете самостоятельно.
Первые восемь заданий развивают один Git-репозиторий. Новые учебные файлы приходят через softpractice update, ваши решения остаются в истории. Девятое задание начинается в отдельном проекте.
Что остаётся кроме SQL
Вы добавляете собственные проверочные данные и сценарии: они должны показать, сохраняется ли нужное свойство после изменения решения. Для оценки производительности наблюдаете прочитанные строки и байты, число вставок и созданных частей. Так обсуждение «стало быстрее» получает конкретное основание — какую работу удалось исключить и чем за это пришлось заплатить при записи.
Замеры и объяснение выбора сохраняются в decision.md. В результате в проекте остаются схема, запросы, проверки и ход рассуждения: что вы считаете фактом, какие гарантии даёт решение и где заканчиваются проверенные условия его работы.
Какие навыки нужны на входе
Практикум подойдёт разработчику от уверенного junior со знанием SQL. Поздние задания требуют больше самостоятельности. Перед началом нужно:
- писать SQL с фильтрацией,
JOIN,GROUP BYи агрегатными функциями; - понимать таблицы, типы данных и назначение миграций;
- пользоваться Git и запускать окружение Docker с Compose.
Предварительное знание ClickHouse не требуется. На компьютере нужен Python 3.10 или новее для готовых инструментов; писать Python-код и устанавливать дополнительные пакеты для них не нужно.
Основная работа — SQL, конфигурация загрузки, проверки и объяснение решений. Построение BI-дашбордов, настройка Kafka и администрирование кластера в маршрут не входят.
Официальные материалы — полезное дополнение
Рекомендуем изучить бесплатные материалы ClickHouse Academy на английском языке. Они помогут познакомиться с устройством СУБД, хранением данных и выполнением запросов. Детали команд и механизмов можно уточнять в официальной документации ClickHouse.
Это необязательная подготовка: вводное задание и теория практикума дают необходимый контекст. Можно заглянуть в официальные материалы заранее или возвращаться к ним по мере появления вопросов.
Как попробовать
SQL вы пишете у себя в редакторе, самостоятельно или со своими ИИ-инструментами. Решение отправляете через softpractice submit. Автоматические проверки показывают, какие требования выполнены. Со второго урока к ним добавляется ИИ-рецензия подхода и объяснения решения. Её рекомендации дополняют результаты проверок и не заменяют их.
Первые два задания бесплатны. За это время вы запустите ClickHouse, попробуете формат собственных проверок и спроектируете хранение событий.
Посмотреть программу и начать практикум по ClickHouse.
Практикум подготовлен SoftPractice и не является официальной программой ClickHouse. ClickHouse is a registered trademark of ClickHouse, Inc. Официальный сайт ClickHouse.
