Olist E-commerce — End-to-End Data Engineering Project
Objectif
Mettre en place une pipeline analytique de bout en bout sur le dataset Olist Brazilian E-commerce :
- Ingestion des CSV Kaggle → PostgreSQL (
raw.*) - Transformation en modèle analytique via dbt (
staging.*,mart.*) - Orchestration avec Apache Airflow
- Visualisation des KPI avec une app Streamlit
Dataset
Dataset Olist Brazilian E-commerce :
- Période couverte : 2016 à 2018
- Volume : environ 100 000 commandes
- Source : Olist, la plus grande place de marché brésilienne, connectant des petites entreprises à différents canaux de vente.
- Objectif : analyser la performance des ventes, des livraisons et la satisfaction client.
Stack utilisée
- Python 3.10+ : Pandas, SQLAlchemy, psycopg2, dotenv
- PostgreSQL 15 : entrepôt de données
- dbt-core 1.8 : modélisation analytique
- Apache Airflow 2.9 : orchestration des workflows
- Streamlit + Plotly : dashboard interactif
- Docker Compose : orchestration des services
Orchestration avec Airflow
Le DAG exécute les étapes suivantes :
- Téléchargement Kaggle (données brutes →
data/) - Ingestion des CSV dans Postgres (schéma
raw) - Transformations dbt :
- Le schéma
stagingstandardise les colonnes, nettoie les types et prépare les tables brutes pour analyse. - Le schéma
martconstruit des tables analytiques (faits et dimensions) adaptées aux dashboards et aux KPI métiers.
Application Streamlit
Fonctionnalités incluses :
- KPI globaux (commandes, clients, délais de livraison)
- Boxplots des délais de livraison
- Churn client (segmentation RFM)
- Retards par État (barres horizontales)
Structure du projet
olist-ecommerce-endtoend/
├─ airflow/dags/ # DAGs Airflow
├─ etl/ # Scripts Python ETL
├─ dbt/ # Modèles dbt (staging + marts)
├─ app/streamlit_app.py # Dashboard Streamlit
├─ data/ # Données locales (Kaggle)
├─ docker-compose.yml
├─ requirements.txt
└─ .env