ClickHouse: собственная аналитика сайта
Развиваем учебный проект «События» в 12 последовательных уроках. Каждый шаг использует результат предыдущего: прежние объекты, идентификаторы и правила остаются узнаваемыми. Серия входит в прикладной продуктовый маршрут.
Предпосылки: Основы SQL и HTTP; документированные SQL API ClickHouse, конкретный серверный релиз ещё не выбран. Проверка API по официальным источникам проведена 11 октября 2026 года; выбранная ветка не объявляется самым новым major. Установка, программы, SQL, сборка, тесты и размещение не выполнялись. example_execution: not_run; описанные ответы и экраны ожидаемые.
Приёмник браузерных событий, очередь, промышленная синхронизация слоёв, внешняя панель и размещение отсутствуют. SQL и исходные данные подготовлены для будущего выполнения.
Оглавление
| № | Урок | Результат |
|---|---|---|
| 1 | ClickHouse и модель аналитики сайта | Определяем поток «События», вопросы отчёта и границы аналитического хранилища. |
| 2 | Контракт события и минимизация данных | Задаём обязательные поля, анонимный идентификатор и правила обработки времени без лишних пользовательских данных. |
| 3 | Таблица событий и типы ClickHouse | Создаём исходную MergeTree-таблицу с UTC-временем, UUID и низкокардинальными признаками. |
| 4 | Пакетная вставка и подтверждение доставки | Загружаем JSONEachRow через SQL/HTTP и различаем повтор доставки, принятую партию и исходный файл. |
| 5 | Ключ сортировки и партиции событий | Связываем ORDER BY с запросами, отделяя индекс чтения от уникальности и управления сроками. |
| 6 | Повторы и поздние события | Строим ReplacingMergeTree-слой и читаем логические события через FINAL с неизменяемым ключом. |
| 7 | Счётчики событий и качество данных | Считаем просмотры и анонимные идентификаторы, не смешивая метрики и проверку доставки. |
| 8 | Воронка просмотра и завершения | Строим последовательную воронку по паре браузер–урок с окном24 часа. |
| 9 | Когорты и удержание читателей | Определяем первую наблюдаемую дату и считаем возвращение D1 по календарным днямUTC. |
| 10 | Материализованные представления и повторы | Создаём агрегаты вставок и отделяем их от корректного отчёта по дедуплицированным событиям. |
| 11 | TTL и срок хранения аналитики | Определяем срок каждого слоя и объясняем отложенное удаление и независимость агрегатов. |
| 12 | Экспорт отчёта и передача «Событий» | Готовим агрегированный CSV для dashboard и договор качества, обновления и доступа. |
Комплект проекта
Скачать исходники «События». Архив содержит одно конечное состояние или согласованный SQL-комплект, README и HANDOFF.md; ранние фрагменты уроков не выдаются за независимо выполненные версии. Ожидаемые данные имеют явную подпись, реальных результатов исполнения нет.