Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Paps Analytics

Plateforme d'analyse logistique avec Data Lakehouse

Docker PostgreSQL Apache Spark Apache Iceberg Project Nessie Apache Airflow MinIO


Table des matieres

  1. Presentation
  2. Objectif du projet
  3. Architecture
  4. Technologies
  5. Installation
  6. Structure du projet
  7. Pipeline de donnees
  8. Dashboard React
  9. Captures d ecran
  10. Limites et perspectives
  11. Contact

Presentation

Paps Analytics est une plateforme Data Lakehouse developpee dans le cadre d un projet de comprehension et de maitrise de l ensemble du cycle de vie des donnees en Data Engineering.

Ce projet a pour vocation de demontrer comment des donnees brutes peuvent etre collectees, stockees, transformees, versionnees et visualisees a travers une architecture moderne.


Objectif du projet

Ce projet a ete concu pour repondre a plusieurs objectifs :

1. Comprendre le cycle de vie des donnees

  • De la generation des donnees a leur visualisation
  • Maitrise des concepts de Data Lakehouse

2. Mettre en oeuvre une architecture complete

  • Conteneurisation avec Docker
  • Traitement distribue avec Spark
  • Stockage avec MinIO
  • Versionning avec Nessie
  • Format de table avec Iceberg

3. Proposer une visualisation interactive

  • Dashboard React pour l exploration des KPIs
  • Filtres dynamiques pour une analyse fine

4. Preparer une evolution vers des outils professionnels

  • Migration vers Snowflake pour le Data Warehouse
  • Dashboards Power BI pour la production

Architecture

┌─────────────────────────────────────────────────────────────────────────────┐
│                         PAPS ANALYTICS                                    │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                             │
│  SOURCES                                                                   │
│  └── PostgreSQL (Donnees generees : 1 226 765 lignes)                     │
│                                                                             │
│  ORCHESTRATION                                                             │
│  └── Apache Airflow                                                        │
│                                                                             │
│  PROCESSING                                                                │
│  └── Apache Spark                                                          │
│                                                                             │
│  LAKEHOUSE                                                                 │
│  ├── BRONZE (Donnees brutes)                                              │
│  ├── SILVER (Donnees nettoyees)                                           │
│  └── GOLD (Star Schema + KPIs)                                           │
│                                                                             │
│  VISUALISATION                                                             │
│  ├── API FastAPI (Backend)                                               │
│  └── Dashboard React (Frontend)                                          │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

Flux des donnees

PostgreSQL (donnees sources)
    ↓
Spark (ingestion)
    ↓
BRONZE (donnees brutes)
    ↓
Spark (nettoyage)
    ↓
SILVER (donnees nettoyees)
    ↓
Spark (agregations)
    ↓
GOLD (Star Schema + KPIs)
    ↓
API FastAPI
    ↓
Dashboard React

Technologies

Composant Technologie Role
Conteneurisation Docker / Docker Compose Infrastructure reproductible
Traitement distribue Apache Spark Moteur de calcul
Format de table Apache Iceberg ACID, Time Travel, Partitionnement
Catalog Project Nessie Versionning comme Git
Stockage objet MinIO Lakehouse S3 compatible
Base de donnees PostgreSQL Donnees sources
Orchestration Apache Airflow Automatisation des pipelines
API Backend FastAPI Exposition des donnees
Frontend React + Material-UI Dashboard interactif
Graphiques Recharts Visualisations

Installation

Infrastructure XData

Ce projet repose sur XData, une mini plateforme Data Lakehouse réutilisable que j'ai conçue pour centraliser l'infrastructure nécessaire à ce type de projet. Elle fournit tous les services de base :

Apache Spark (moteur de traitement distribué)

Apache Iceberg (format de table moderne)

Project Nessie (catalog et versionning des données)

MinIO (stockage objet compatible S3)

PostgreSQL (base de données relationnelle)

Apache Kafka (streaming de données)

Apache Airflow (orchestration des pipelines)

Note : : L'infrastructure XData est disponible en privé sur GitHub. Si vous souhaitez y accéder pour reproduire ce projet ou l'adapter à vos besoins, n'hésitez pas à me contacter à l'adresse suivante : kebeniako17@gmail.com. Je vous fournirai l'accès et vous accompagnerai si nécessaire.

Etapes d installation

  1. Cloner le projet
git clone https://github.com/InnoDataNiako/Paps-Analytics.git
cd Paps-Analytics
  1. Demarrer l infrastructure
docker compose --env-file docker/.env -f docker/compose/docker-compose.yml up -d
  1. Generer les donnees
docker exec -it xdata-spark bash
cd /opt/xdata
python3 scripts/generate_paps_data.py
  1. Lancer le pipeline Spark
spark-submit --master local[*] /opt/xdata/jobs/batch/paps_ingest_bronze.py
spark-submit --master local[*] /opt/xdata/jobs/batch/paps_clean_silver.py
spark-submit --master local[*] /opt/xdata/jobs/batch/paps_gold.py
  1. Lancer le backend FastAPI
docker cp dashboard/backend xdata-spark:/opt/xdata/dashboard/
docker exec -it xdata-spark bash -c "cd /opt/xdata/dashboard/backend && spark-submit ... app.py"
  1. Lancer le frontend React
cd dashboard/frontend
npm install
npm run dev

Acces aux services

Service URL Identifiants
Dashboard React http://localhost:5173 -
Backend API http://localhost:8000 -
Airflow http://localhost:8081 admin / admin
MinIO http://localhost:9001 xdata / xdata123
pgAdmin http://localhost:5050 admin@example.com / admin

Structure du projet

Paps/
├── airflow/                         # Orchestration Airflow
│   └── dags/
│       └── paps_pipeline_dag.py
│
├── dashboard/                       # Dashboard React + Backend
│   ├── backend/
│   │   └── app.py                   # API FastAPI
│   └── frontend/
│       ├── src/
│       │   ├── pages/               # Pages du dashboard
│       │   │   ├── Direction.jsx
│       │   │   ├── Livraison.jsx
│       │   │   ├── Finance.jsx
│       │   │   └── Livreurs.jsx
│       │   ├── components/          # Composants UI
│       │   └── hooks/               # Hooks personnalises
│       └── package.json
│
├── images/                          # Captures d ecran
├── scripts/                         # Scripts de generation
│   └── generate_paps_data.py
│
├── spark/                           # Scripts Spark
│   └── jobs/
│       └── batch/
│           ├── paps_ingest_bronze.py
│           ├── paps_clean_silver.py
│           └── paps_gold.py
│
├── docker-compose.yml
└── README.md

Pipeline de donnees

1. Generation des donnees

Le script generate_paps_data.py genere 1 226 765 lignes de donnees coherentes avec l activite de Paps.

2. Ingestion Bronze

Lecture des donnees depuis PostgreSQL et ecriture dans la couche Bronze (Iceberg).

3. Nettoyage Silver

Nettoyage des donnees : suppression des doublons, correction des types, validation.

4. KPIs Gold

Creation du Star Schema (dimensions + faits) et calcul des KPIs.


Dashboard React

Pages disponibles

1. Direction (Vue globale)

  • KPIs : CA, Livraisons, Taux de reussite, Clients actifs
  • Evolution du CA par mois
  • Livraisons par region
  • Statut des livraisons
  • Top 10 villes

2. Livraison

  • Livraisons du jour / semaine / retards
  • Livraisons par jour
  • Top 10 quartiers
  • Temps moyen de livraison

3. Finance

  • CA total, CA livraisons, Frais d expedition
  • Evolution du CA mensuel
  • CA par ville
  • Methodes de paiement

4. Livreurs

  • Nombre de livreurs, Livraisons par livreur
  • Top 10 livreurs (Prenom + Nom)
  • Temps moyen par livreur
  • Performance par region (Heatmap)

Captures d ecran

Infrastructure XData

Tous les services XData en fonctionnement

Donnees sources

Donnees brutes dans PostgreSQL

Couches du Lakehouse

MinIO Bronze MinIO Silver MinIO Gold Buckets MinIO

Nessie Catalog

Tables Gold dans Nessie

Backend FastAPI

Backend fonctionne

Dashboard Direction

Dashboard Direction

Dashboard Livraison

Dashboard Livraison

Dashboard Finance

Dashboard Finance

Dashboard Livreurs

Dashboard Livreurs


Limites et perspectives

Limites actuelles

Donnees de test : Le projet utilise des donnees generees artificiellement. Les donnees reelles de Paps sont confidentielles et non disponibles pour ce projet de demonstration.

Power BI : Ce projet est developpe sur Ubuntu. Power BI Desktop n est pas disponible sur Linux. La visualisation a donc ete realisee avec React pour garantir l accessibilite et l interactivite.

Dashboard : Le dashboard React est une version de demonstration. Il n est pas destine a la production mais a illustrer les concepts.

Perspectives d evolution

Integration Snowflake : Les donnees Gold seront exportees vers Snowflake pour beneficier d un Data Warehouse scalable et performant.

Dashboards Power BI : Une fois les donnees dans Snowflake, des dashboards Power BI professionnels seront crees pour la direction, la finance et les operations.

Donnees reelles : Le projet est conçu pour s adapter aux donnees reelles de Paps avec des ajustements mineurs du pipeline.

Monitoring : Mise en place de Grafana et Prometheus pour le suivi des performances.


Contact


Avertissement

Ce projet est une demonstration technique realisee dans un cadre d apprentissage. Il ne reproduit ni les systemes internes, ni les donnees, ni l architecture reelle de Paps.


Paps Analytics - De la donnee brute a la decision

About

Plateforme Data Lakehouse pour l'analyse logistique avec PostgreSQL (source), Spark (processing), MinIO (storage), Iceberg (table format) et Nessie (catalog).

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages