Проект реализует end-to-end пайплайн обработки данных доставки и расчёта выплат курьерам.
Архитектура построена по классической трёхслойной модели:
- STG — слой сырых данных из API
- DDS — детальный слой (снежинка)
- CDM — витрина для расчёта выплат курьерам
Необходимо построить витрину выплат курьерам, которая содержит:
- количество заказов за месяц
- сумму заказов
- средний рейтинг курьера
- комиссию компании
- сумму начислений курьеру
- чаевые
- итоговую выплату
API -> STG (raw JSON) -> DDS (нормализованная модель) -> CDM (витрина выплат курьерам)
Хранит данные из API в формате JSON.
stg.api_restaurantsstg.api_couriersstg.api_deliveries
- данные не трансформируются
- сохраняется полный JSON
- используется пагинация API
Модель "снежинка".
dds.dm_couriers— справочник курьеровdds.dm_orders— заказы (связь с пользователями и ресторанами)dds.fct_deliveries— факты доставокdds.fct_product_sales— продажи по заказамdds.dm_timestamps— календарь
cdm.dm_courier_ledger
- courier_id
- courier_name
- settlement_year
- settlement_month
- orders_count
- orders_total_sum
- rate_avg
- order_processing_fee
- courier_order_sum
- courier_tips_sum
- courier_reward_sum
- Python 3.10
- Apache Airflow
- PostgreSQL
- REST API
- SQL (CTE, оконные функции, агрегации)
stg_api_restaurants_dagstg_api_couriers_dagstg_api_deliveries_dag
dds_dm_couriers_dagdds_dm_orders_dagdds_fct_deliveries_dag
cdm_dm_courier_ledger_dag
- пагинация API (limit/offset)
- сохранение JSON
- upsert по object_id
- нормализация данных
- связывание сущностей
- добавление курьера в модель заказов
- расчет выплат по бизнес-логике
- учет рейтинга курьера
- расчет комиссии и чаевых
- агрегация по месяцам
| Рейтинг | Процент | Мин. выплата |
|---|---|---|
| < 4.0 | 5% | 100 |
| 4–4.5 | 7% | 150 |
| 4.5–4.9 | 8% | 175 |
| ≥ 4.9 | 10% | 200 |
Проект реализует полный цикл:
- загрузка данных из API
- построение DWH
- формирование аналитической витрины
- расчёт бизнес-метрик
project/ ├── dags/ │ ├── stg/ │ ├── dds/ │ └── cdm/ ├── sql_scripts/ │ ├── stg/ │ ├── dds/ │ └── cdm/ ├── api_entities.md ├── src/ ├── venv/
- инкрементальная загрузка CDM
- partitioning по месяцам
- мониторинг качества данных
- retry/backfill стратегии
- Data Quality checks (Great Expectations)
Проект выполнен как учебный pet-project по построению DWH-пайплайна с использованием Airflow и PostgreSQL.