**Контекст:** в Kafka topic `events.raw` приходят 100M events/день. Нужно построить Iceberg таблицу для self-service analytics с правильным partitioning.
**Существующая Kafka таблица в Trino:**
[см. код в задании]
**Задание:**
1. Создать **Iceberg таблицу** `iceberg.analytics.events` через CTAS
2. Partition by **day(event_time)** + **country** (для partition pruning)
3. Sort within partition by `(user_id, event_time)` для compression
4. Format = Parquet, compression = ZSTD
5. После создания — запускать **OPTIMIZE** еженедельно для compaction
Структура для ориентира — реальные значения из эталонного решения.
CREATE TABLE iceberg.analytics.events
WITH (
partitioning = ARRAY['day(event_time)', 'country'],
format = 'PARQUET',
format_version = '2',
-- Compression
parquet_compression_codec = 'ZSTD',
-- Sort within partition for better compression
sorted_by = ARRAY['user_id', 'event_time']
) AS
SELECT
user_id,
event_time,
event_type,
country,
amount,
metadata
FROM kafka.events.raw
WHERE event_time >= TIMESTAMP '2026-01-01 00:00:00'
AND event_time < CURRENT_TIMESTAMP;
Trino CTAS Iceberg partitioning streaming
Это задание для уровня Senior. Senior-уровень — глубокое понимание темы, опыт решения нестандартных задач, обсуждение trade-off на собеседовании.
Подобные задания в категории «SQL» регулярно дают на собеседованиях аналитика данных в Яндекс, Сбер, Ozon, Авито, Тинькофф, Wildberries, T-Bank, X5, ВТБ и других крупных IT-компаниях. Тематика: Trino, CTAS, Iceberg, partitioning, streaming.
На реальном собеседовании на подобную задачу отводится 30-60 минут с обсуждением подходов, оптимизаций и trade-off. Для тренировки рекомендуем сначала решить самостоятельно, потом сверить с эталонным решением и подсказками.
На zasqlpython.ru есть 520+ SQL задач в песочнице с автопроверкой кода, конспекты SQL для аналитика, AI мок-собеседование с разбором ваших ответов.
← Все задания