Real-time DAU через Materialized View

Middle SQL data_engineering

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

**Данные:** raw events приходят из Kafka в real-time:

[см. код в задании]

**Задание:**

Спроектировать **real-time DAU dashboard** который читается за <100ms.

1. Создать **AggregatingMergeTree** таблицу для агрегатов DAU по дням
2. Создать **Materialized View** который автоматически обновляет агрегаты при INSERT в `events`
3. Написать SELECT который читает агрегаты для последних 30 дней
4. Обеспечить: latency < 100ms даже на 1B+ events

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

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

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

Темы

ClickHouse materialized view AggregatingMergeTree real-time

Подсказки

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

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

Какой уровень знаний нужен для задачи "Real-time DAU через Materialized View"?

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

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

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

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

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

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

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

← Все задания