Перейти к содержанию

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; ранние фрагменты уроков не выдаются за независимо выполненные версии. Ожидаемые данные имеют явную подпись, реальных результатов исполнения нет.