AggregatingMergeTree: real-time DAU через uniqState / uniqMerge

Middle SQL Общие

Условие задания

**Задача:** real-time дашборд DAU должен открываться мгновенно, но таблица событий — миллиарды строк. Считать `uniq(user_id)` на лету по сырым данным слишком долго.

**Данные:**
[см. код в задании]

**Задание:**
1. Спроектируй агрегирующую таблицу `dau_agg`, которая хранит DAU предрассчитанным, но корректно (а не сумму, которая задвоит пользователей).
2. Объясни, почему нельзя просто хранить `UInt64` с числом и складывать его.
3. Покажи запрос для чтения DAU из агрегата.

Пример данных

Структура для ориентира — реальные значения из эталонного решения.

CREATE TABLE dau_agg (
    day Date,
    uniq_users AggregateFunction(uniq, UInt64)
) ENGINE = AggregatingMergeTree
ORDER BY day;

CREATE MATERIALIZED VIEW dau_mv TO dau_agg AS
SELECT
    toDate(event_time) AS day,
    uniqState(user_id) AS uniq_users
FROM events
GROUP BY day;

Темы

ClickHouse AggregatingMergeTree uniqState uniqMerge materialized view

Подсказки

Все тестовые задания →

Частые вопросы

Какой уровень знаний нужен для задачи "AggregatingMergeTree: real-time DAU через uniqState / uniqMerge"?

Это задание для уровня Middle. Для middle-аналитиков с опытом 1-3 года, требует уверенного владения темой и понимания edge cases.

На каких собеседованиях встречается такая задача?

Подобные задания в категории «SQL» регулярно дают на собеседованиях аналитика данных в Яндекс, Сбер, Ozon, Авито, Тинькофф, Wildberries, T-Bank, X5, ВТБ и других крупных IT-компаниях. Тематика: ClickHouse, AggregatingMergeTree, uniqState, uniqMerge, materialized view.

Сколько времени даётся на решение?

На реальном собеседовании на подобную задачу отводится 15-30 минут — оцениваются подход, корректность, обработка edge cases. Для тренировки рекомендуем сначала решить самостоятельно, потом сверить с эталонным решением и подсказками.

Где ещё потренироваться по теме «SQL»?

На zasqlpython.ru есть 520+ SQL задач в песочнице с автопроверкой кода, конспекты SQL для аналитика, AI мок-собеседование с разбором ваших ответов.

← Все задания