**Компания:** Тинькофф
**Контекст:** Нужно настроить расписание ETL-пайплайнов. Данные из источников приходят с разной задержкой: транзакции — к 3:00, справочники — к 1:00, агрегаты маркетинга — к 6:00.
**Задание:**
1. Напишите CRON-выражения для следующих расписаний:
- Загрузка справочников: каждый день в 2:00
- Загрузка транзакций: каждый день в 4:00
- Построение витрин: каждый день в 5:00
- Обновление агрегатов маркетинга: каждый день в 7:00
- Полный пересчёт витрин: каждое воскресенье в 3:00
2. Объясните зависимости между задачами
3. Напишите SQL-запрос для мониторинга: какие задачи не выполнились вовремя
Структура для ориентира — реальные значения из эталонного решения.
CREATE TABLE etl_runs (
run_id SERIAL PRIMARY KEY,
task_name VARCHAR(100),
started_at TIMESTAMP,
finished_at TIMESTAMP,
status VARCHAR(20), -- success, failed, running
rows_affected INT
);
-- Задачи, не завершившиеся вовремя
SELECT task_name,
started_at,
finished_at,
status
FROM etl_runs
WHERE started_at::date = CURRENT_DATE
AND (status = 'failed'
OR (status = 'running'
AND started_at < NOW() - INTERVAL '2 hours'));
CRON планирование ETL расписание Airflow
Это задание для уровня easy. Senior-уровень — глубокое понимание темы, опыт решения нестандартных задач, обсуждение trade-off на собеседовании.
Подобные задания в категории «data_engineering» регулярно дают на собеседованиях аналитика данных в Яндекс, Сбер, Ozon, Авито, Тинькофф, Wildberries, T-Bank, X5, ВТБ и других крупных IT-компаниях. Тематика: CRON, планирование, ETL, расписание, Airflow.
На реальном собеседовании на подобную задачу отводится 30-60 минут с обсуждением подходов, оптимизаций и trade-off. Для тренировки рекомендуем сначала решить самостоятельно, потом сверить с эталонным решением и подсказками.
На zasqlpython.ru есть другие задания в категории «data_engineering», продуктовые кейсы, справочник метрик, AI мок-собеседование с разбором ваших ответов.
← Все задания