ClickHouse projections на собеседовании Data Engineer

Прокачай SQL для собеса
500+ задач по SQL: оконные функции, JOIN, CTE — с разбором каждой
Тренировать SQL в Telegram

Карьерник — Duolingo для аналитиков: 10 минут в день тренируй SQL, Python, A/B, статистику, метрики и ещё 3 темы собеса. 1500+ вопросов в Telegram-боте. Бесплатно.

Что такое projection

ClickHouse 21+. Pre-computed alternative ordering / aggregation того же data.

Идея. Same data, but different sort key или pre-aggregated. Optimizer auto-uses когда query matches.

Создание

ALTER TABLE events ADD PROJECTION p_user
(
  SELECT user_id, event_type, count() FROM events
  GROUP BY user_id, event_type
);

ALTER TABLE events MATERIALIZE PROJECTION p_user;

Хранится физически рядом с main table parts.

При INSERT в main — projections updated automatically.

Projection vs MV

Projection Materialized View
Storage Inside table Separate table
Optimizer use Automatic Manual SELECT FROM mv
INSERT cost На каждую projection На каждый MV
Schema flexibility Limited Full
Time travel С table Independent

Projections — automatic. MV — explicit.

Прокачай SQL для собеса
500+ задач по SQL: оконные функции, JOIN, CTE — с разбором каждой
Тренировать SQL в Telegram

Optimizer behavior

Когда query matches projection — CH использует projection вместо table.

-- main table sorted by event_time.
-- projection p_user sorted by user_id.

SELECT count() FROM events WHERE user_id = 42;
-- optimizer chooses p_user (faster для filter on user_id).

SELECT count() FROM events WHERE event_time > '2026-05-01';
-- optimizer chooses main table (sorted by event_time).

Без code change — speedup automatic.

Use cases

Multiple sort orders. Когда queries filter on different columns.

Pre-aggregations. Daily counts pre-computed → query milliseconds.

Materialized columns. Computed expressions saved.

Limitations.

  • INSERT slower (write to projections too).
  • Не all queries — match projections.
  • Disk usage растёт.

Связанные темы

FAQ

Это официальная информация?

Нет. Статья основана на документации ClickHouse 23.x.


Тренируйте Data Engineering — откройте тренажёр с 1500+ вопросами для собесов.