← Retour

Olist – ETL & Dashboard

ETLPostgreSQLAirflowBI

Code : Repo code


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 staging standardise les colonnes, nettoie les types et prépare les tables brutes pour analyse.
  • Le schéma mart construit des tables analytiques (faits et dimensions) adaptées aux dashboards et aux KPI métiers.

airflow — Aperçu 1 airflow — Aperçu 2

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)

Dashboard — Aperçu 1 Dashboard — Aperçu 2

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