Схема данных для event tracking

medium data_engineering Общие

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

**Компания:** ВК

**Контекст:** Продуктовая команда запускает новый раздел приложения. Нужно спроектировать схему для хранения событий (event tracking), которая будет:
- Гибкой: новые события добавляются без миграций
- Быстрой: аналитики часто фильтруют по event_type и дате
- Расширяемой: у каждого события свой набор параметров

**Задание:**
1. Спроектируйте DDL таблицы событий с учётом требований
2. Создайте индексы для типичных аналитических запросов
3. Напишите примеры вставки событий разных типов и аналитического запроса

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

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

CREATE TABLE events (
    event_id BIGINT GENERATED ALWAYS AS IDENTITY,
    -- Общие поля (типизированные, индексируемые)
    event_type VARCHAR(100) NOT NULL,
    user_id BIGINT NOT NULL,
    session_id VARCHAR(64),
    platform VARCHAR(20),         -- ios, android, web
    app_version VARCHAR(20),
    -- Гибкие параметры
    properties JSONB DEFAULT '{}',
    -- Временные метки
    event_ts TIMESTAMP NOT NULL,  -- время на клиенте
    server_ts TIMESTAMP DEFAULT NOW(),
    -- Партиционирование
    event_date DATE GENERATED ALWAYS AS (event_ts::date) STORED
) PARTITION BY RANGE (event_date);

-- Индексы
CREATE INDEX idx_events_type_date ON events (event_type, event_date);
CREATE INDEX idx_events_user_date ON events (user_id, event_date);
CREATE INDEX idx_events_properties ON events USING GIN (properties);

Темы

event tracking DDL схема JSONB проектирование

Подсказки

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

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

Какой уровень знаний нужен для задачи "Схема данных для event tracking"?

Это задание для уровня medium. Senior-уровень — глубокое понимание темы, опыт решения нестандартных задач, обсуждение trade-off на собеседовании.

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

Подобные задания в категории «data_engineering» регулярно дают на собеседованиях аналитика данных в Яндекс, Сбер, Ozon, Авито, Тинькофф, Wildberries, T-Bank, X5, ВТБ и других крупных IT-компаниях. Тематика: event tracking, DDL, схема, JSONB, проектирование.

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

На реальном собеседовании на подобную задачу отводится 30-60 минут с обсуждением подходов, оптимизаций и trade-off. Для тренировки рекомендуем сначала решить самостоятельно, потом сверить с эталонным решением и подсказками.

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

На zasqlpython.ru есть другие задания в категории «data_engineering», продуктовые кейсы, справочник метрик, AI мок-собеседование с разбором ваших ответов.

← Все задания