**Компания:** Авито
**Контекст:** ETL-пайплайн обновления витрины `mart_orders` упал на середине: часть данных за 15 марта обновилась, часть — нет. Витрина в неконсистентном состоянии. Нужно восстановить.
[см. код в задании]
**Задание:**
1. Напишите SQL для восстановления данных из backup за проблемную дату
2. Переработайте ETL, чтобы он был атомарным (всё или ничего)
3. Предложите стратегию backup для критичных витрин
Структура для ориентира — реальные значения из эталонного решения.
BEGIN;
-- Удалить проблемные данные
DELETE FROM mart_orders
WHERE order_date = '2024-03-15';
-- Восстановить из backup
INSERT INTO mart_orders
SELECT * FROM mart_orders_backup
WHERE order_date = '2024-03-15';
-- Проверка: кол-во строк должно совпадать
-- SELECT COUNT(*) FROM mart_orders WHERE order_date = '2024-03-15';
-- SELECT COUNT(*) FROM mart_orders_backup WHERE order_date = '2024-03-15';
COMMIT;
rollback восстановление транзакции backup ETL
Это задание для уровня medium. Senior-уровень — глубокое понимание темы, опыт решения нестандартных задач, обсуждение trade-off на собеседовании.
Подобные задания в категории «data_engineering» регулярно дают на собеседованиях аналитика данных в Яндекс, Сбер, Ozon, Авито, Тинькофф, Wildberries, T-Bank, X5, ВТБ и других крупных IT-компаниях. Тематика: rollback, восстановление, транзакции, backup, ETL.
На реальном собеседовании на подобную задачу отводится 30-60 минут с обсуждением подходов, оптимизаций и trade-off. Для тренировки рекомендуем сначала решить самостоятельно, потом сверить с эталонным решением и подсказками.
На zasqlpython.ru есть другие задания в категории «data_engineering», продуктовые кейсы, справочник метрик, AI мок-собеседование с разбором ваших ответов.
← Все задания