Merge (UPSERT) стратегия для справочника

medium data_engineering Общие

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

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

**Контекст:** Справочник товаров обновляется из внешней системы. Записи могут добавляться, обновляться или удаляться (soft delete). Нужно реализовать стратегию синхронизации.

[см. код в задании]

**Задание:**
1. Реализуйте UPSERT: новые записи вставить, существующие обновить
2. Реализуйте soft delete: если товар есть в dim, но нет в stg — пометить неактивным
3. Напишите запрос для аудита: какие записи были добавлены, обновлены, удалены

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

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

INSERT INTO dim_product (product_id, name, category, price, is_active, created_at, updated_at)
SELECT product_id, name, category, price, is_active, NOW(), NOW()
FROM stg_products
ON CONFLICT (product_id) DO UPDATE SET
    name = EXCLUDED.name,
    category = EXCLUDED.category,
    price = EXCLUDED.price,
    is_active = EXCLUDED.is_active,
    updated_at = NOW()
WHERE dim_product.name != EXCLUDED.name
   OR dim_product.category != EXCLUDED.category
   OR dim_product.price != EXCLUDED.price
   OR dim_product.is_active != EXCLUDED.is_active;

Темы

MERGE UPSERT ON CONFLICT справочник обновление

Подсказки

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

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

Какой уровень знаний нужен для задачи "Merge (UPSERT) стратегия для справочника"?

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

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

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

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

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

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

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

← Все задания