**Компания:** ВК
**Контекст:** Команда аналитиков попросила витрину с ежедневной статистикой контента (посты, лайки, репосты). Вы выбираете между Materialized View и ETL-таблицей.
**Задание:**
1. Реализуйте оба варианта: MV и ETL-таблицу
2. Составьте таблицу сравнения: производительность, гибкость, мониторинг, SLA
3. Дайте рекомендацию, какой вариант выбрать и почему
Структура для ориентира — реальные значения из эталонного решения.
CREATE TABLE mart_content_daily (
dt DATE,
content_type VARCHAR(50),
posts INT,
likes INT,
reposts INT,
unique_authors INT,
updated_at TIMESTAMP DEFAULT NOW(),
PRIMARY KEY (dt, content_type)
);
-- Инкрементальное обновление
DELETE FROM mart_content_daily WHERE dt = CURRENT_DATE - 1;
INSERT INTO mart_content_daily (dt, content_type, posts, likes, reposts, unique_authors)
SELECT
event_ts::date AS dt,
content_type,
COUNT(*) FILTER (WHERE event_type = 'post'),
COUNT(*) FILTER (WHERE event_type = 'like'),
COUNT(*) FILTER (WHERE event_type = 'repost'),
COUNT(DISTINCT user_id)
FROM content_events
WHERE event_ts::date = CURRENT_DATE - 1
GROUP BY event_ts::date, content_type;
materialized view ETL trade-off производительность
Это задание для уровня medium. Senior-уровень — глубокое понимание темы, опыт решения нестандартных задач, обсуждение trade-off на собеседовании.
Подобные задания в категории «data_engineering» регулярно дают на собеседованиях аналитика данных в Яндекс, Сбер, Ozon, Авито, Тинькофф, Wildberries, T-Bank, X5, ВТБ и других крупных IT-компаниях. Тематика: materialized view, ETL, trade-off, производительность.
На реальном собеседовании на подобную задачу отводится 30-60 минут с обсуждением подходов, оптимизаций и trade-off. Для тренировки рекомендуем сначала решить самостоятельно, потом сверить с эталонным решением и подсказками.
На zasqlpython.ru есть другие задания в категории «data_engineering», продуктовые кейсы, справочник метрик, AI мок-собеседование с разбором ваших ответов.
← Все задания