ClickHouse projections на собеседовании Data Engineer
Карьерник — 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.
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 растёт.
Связанные темы
- ClickHouse MergeTree для DE
- DWH ClickHouse для DE
- Materialized views для DE
- Партиционирование в ClickHouse для DE
- Подготовка к собесу Data Engineer
FAQ
Это официальная информация?
Нет. Статья основана на документации ClickHouse 23.x.
Тренируйте Data Engineering — откройте тренажёр с 1500+ вопросами для собесов.