← Все статьи

Практикум по 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.