**Компания:** Озон
**Контекст:** Справочник товаров обновляется из внешней системы. Записи могут добавляться, обновляться или удаляться (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 справочник обновление
Это задание для уровня medium. Senior-уровень — глубокое понимание темы, опыт решения нестандартных задач, обсуждение trade-off на собеседовании.
Подобные задания в категории «data_engineering» регулярно дают на собеседованиях аналитика данных в Яндекс, Сбер, Ozon, Авито, Тинькофф, Wildberries, T-Bank, X5, ВТБ и других крупных IT-компаниях. Тематика: MERGE, UPSERT, ON CONFLICT, справочник, обновление.
На реальном собеседовании на подобную задачу отводится 30-60 минут с обсуждением подходов, оптимизаций и trade-off. Для тренировки рекомендуем сначала решить самостоятельно, потом сверить с эталонным решением и подсказками.
На zasqlpython.ru есть другие задания в категории «data_engineering», продуктовые кейсы, справочник метрик, AI мок-собеседование с разбором ваших ответов.
← Все задания