Skip to content

Latest commit

 

History

19 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

Courier Payments DWH Pipeline

Проект реализует end-to-end пайплайн обработки данных доставки и расчёта выплат курьерам.

Архитектура построена по классической трёхслойной модели:

  • STG — слой сырых данных из API
  • DDS — детальный слой (снежинка)
  • CDM — витрина для расчёта выплат курьерам

Бизнес-задача

Необходимо построить витрину выплат курьерам, которая содержит:

  • количество заказов за месяц
  • сумму заказов
  • средний рейтинг курьера
  • комиссию компании
  • сумму начислений курьеру
  • чаевые
  • итоговую выплату

Архитектура данных

Поток данных

API -> STG (raw JSON) -> DDS (нормализованная модель) -> CDM (витрина выплат курьерам)


STG слой (сырой слой)

Хранит данные из API в формате JSON.

Таблицы:

  • stg.api_restaurants
  • stg.api_couriers
  • stg.api_deliveries

Особенности:

  • данные не трансформируются
  • сохраняется полный JSON
  • используется пагинация API

DDS слой (детальный слой)

Модель "снежинка".

Таблицы:

  • dds.dm_couriers — справочник курьеров
  • dds.dm_orders — заказы (связь с пользователями и ресторанами)
  • dds.fct_deliveries — факты доставок
  • dds.fct_product_sales — продажи по заказам
  • dds.dm_timestamps — календарь

CDM слой (витрина)

Таблица:

  • 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, оконные функции, агрегации)

DAG структура

STG слой

  • stg_api_restaurants_dag
  • stg_api_couriers_dag
  • stg_api_deliveries_dag

DDS слой

  • dds_dm_couriers_dag
  • dds_dm_orders_dag
  • dds_fct_deliveries_dag

CDM слой

  • cdm_dm_courier_ledger_dag

Особенности реализации

🔹 STG слой

  • пагинация API (limit/offset)
  • сохранение JSON
  • upsert по object_id

🔹 DDS слой

  • нормализация данных
  • связывание сущностей
  • добавление курьера в модель заказов

🔹 CDM слой

  • расчет выплат по бизнес-логике
  • учет рейтинга курьера
  • расчет комиссии и чаевых
  • агрегация по месяцам

Бизнес-логика выплат

Рейтинг Процент Мин. выплата
< 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.

About

Data Engineering project for building a multi-source DWH pipeline with Apache Airflow, PostgreSQL, REST APIs, MongoDB, and ETL/ELT processes. Includes STG, DDS, and CDM layers, data marts, incremental loading, and data quality processing.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages