Self-service витрина для product-команды

hard data_engineering Общие

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

**Компания:** Озон

**Контекст:** Product-команда постоянно просит DE-команду сделать выгрузки. Нужно создать self-service витрину (wide table), которую product-аналитики смогут использовать самостоятельно для 80% своих задач.

**Задание:**
1. Спроектируйте wide table с данными о пользователях: демография, активность, покупки, сегмент
2. Напишите ETL для наполнения витрины
3. Составьте документацию: описание полей, примеры запросов, ограничения
4. Реализуйте разграничение доступа (маскировка PII)

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

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

CREATE TABLE mart_user_360 (
    -- Идентификация
    user_id BIGINT PRIMARY KEY,

    -- Демография
    registration_date DATE,
    registration_source VARCHAR(50),
    city VARCHAR(100),
    region VARCHAR(100),
    platform VARCHAR(20),              -- ios, android, web

    -- Активность (last 30 days)
    last_active_date DATE,
    days_since_last_activity INT,
    active_days_30d INT,
    sessions_30d INT,
    pageviews_30d INT,

    -- Покупки (all time)
    first_order_date DATE,
    last_order_date DATE,
    lifetime_orders INT,
    lifetime_revenue NUMERIC(14,2),
    lifetime_aov NUMERIC(10,2),

    -- Покупки (last 30 days)
    orders_30d INT,
    revenue_30d NUMERIC(14,2),

    -- Категории
    top_category VARCHAR(100),
    top_category_orders INT,
    distinct_categories INT,

    -- RFM
    recency_days INT,
    frequency_30d INT,
    monetary_30d NUMERIC(14,2),
    rfm_segment VARCHAR(30),           -- champions, loyal, at_risk, lost

    -- Сегменты
    user_segment VARCHAR(30),          -- new, active, dormant, churned
    is_premium BOOLEAN,
    has_subscription BOOLEAN,

    -- Метаданные
    updated_at TIMESTAMP DEFAULT NOW()
);

CREATE INDEX idx_user360_segment ON mart_user_360 (user_segment);
CREATE INDEX idx_user360_rfm ON mart_user_360 (rfm_segment);
CREATE INDEX idx_user360_city ON mart_user_360 (city);

Темы

self-service витрина документация проектирование wide table

Подсказки

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

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

Какой уровень знаний нужен для задачи "Self-service витрина для product-команды"?

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

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

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

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

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

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

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

← Все задания