Startup — BI : Pipeline ETL & Datamart
Conception et développement d'une brique décisionnelle complète pour un produit SaaS : pipeline ETL, modèle en étoile, historisation SCD Type 2, scoring pondéré et reporting temps réel.
Passage d'une logique OLTP calculée à la volée (4,2 s) à un datamart OLAP pré-agrégé (0,3 s), avec une amélioration des performances de 81 % et une base solide pour l'analyse prédictive.

Contexte
Refonte BI après désabonnement client
Année
2024 – 2025
Niveau
Master 2 Expert IT/SI
Type
Pipeline ETL & Datamart
Stack
Python · Pandas · PostgreSQL · Docker
Focus
×10 sur les performances du tableau de bord
D'un OLTP inadapté à un OLAP performant
Le client actif s'était désabonné à cause d'un tableau de bord lent et de filtres temporels non fonctionnels. L'objectif était de reconstruire la brique analytique du produit.
- ⚠️Calculs QVT effectués à la volée sur chaque requête GraphQL
- ⚠️Temps de réponse de 1,5 s à 4,2 s selon la volumétrie
- ⚠️Absence d'historisation et de filtre temporel fiable
J'ai piloté le projet de A à Z : cadrage, modélisation, développement ETL, tests, connexion web-app et déploiement sur 6 semaines.
# Avant / Après
Avant : getQVT (OLTP) → 4,2 s
Après : getQVTFromDatamart → 0,3 s
Amélioration : → 81 %
# Volumétrie
4 115 réponses QVT
2 entreprises (client + équipe Startup)
10 équipes
# Pipeline ETL
Durée : 8 s
Succès : 9/9 étapes (100 %)
Pic mémoire : ~4 MB
Ordonnancement : 02h00 quotidienArchitecture business intelligence
Bloc A4 — Pilotage de l'informatique décisionnelle — Compétence A4C2
Modélisation en étoile
Conception d'un datamart OLAP avec tables de dimensions et deux tables de faits (CURRENT + HISTORY) pour optimiser les requêtes présentes et passées.
Pipeline ETL orienté objet
Architecture Python avec classes BaseExtractor et BaseTransformer, conteneurisation Docker, gestion des SCD Type 2 et backfill historique.
Scoring pondéré & normalisé
Passage d'une moyenne arithmétique à un score pondéré par coefficients métier, normalisé sur 10 et pré-calculé dans le datamart.
Écosystème data
Python 3.11 dockerisé, Pandas pour les transformations, PostgreSQL pour le datamart OLAP, Railway pour le déploiement et pytest pour la fiabilité du pipeline.
Python 3.11
ETL
Pandas
Transformation
PostgreSQL
Datamart OLAP
Docker
Conteneurisation
Railway
Déploiement
pytest
Tests
GraphQL
API
Next.js / Recharts
Front BI
pipeline_etl:
extraction:
- source: PostgreSQL OLTP
- extractors: User, Company, Team, Form, Question, Answer
transformation:
- dimensions: DimUser, DimCompany, DimTeam, DimTime, DimForm, DimQuestion, DimTag
- facts: FACT_QVT_CURRENT, FACT_QVT_HISTORY
- SCD Type 2 sur DimUser
- backfill 12 mois
chargement:
- cible: PostgreSQL Datamart
orchestration:
- schedule: 02h00 quotidien
- retry: 3 tentatives (2s, 4s, 8s)
- alertes: Railway notificationsDéroulement en 6 semaines
Cadrage collaboratif avec le CEO, autonomie sur la conception, démonstrations itératives et déploiement progressif.
Analyse & cadrage
2 semaines
Ateliers de cadrage, veille BI, user stories, cahier des charges fonctionnel et analyse de la qualité des données.
Conception & modélisation
2 semaines
Modèle en étoile, architecture pipeline ETL, choix technologiques et validation du datamart avec le métier.
Développement & déploiement
2 semaines
ETL Python, tests, connexion GraphQL, filtres temporels, graphique d'évolution et déploiement staging puis production.
Architecture, modélisation & résultats
Pipeline ETL, datamart, évolution des scores et extraits de logs





Ce que ce projet m'a appris
De la conception macro à l'implémentation micro, en passant par l'accompagnement métier.
✅ Points forts
- •Amélioration des performances de 81 % (4,2 s → 0,3 s)
- •Architecture OLAP complète avec modèle en étoile
- •Historisation SCD Type 2 des utilisateurs
- •Scoring pondéré et normalisé sur 10
- •Tests unitaires et d'intégration avec pytest
- •Déploiement automatisé via Railway avec monitoring et alertes
- •Backfill historique de 12 mois
⚠️ Améliorations identifiées
- •Intégrer des métriques d'usage du tableau de bord
- •Automatiser la pondération par machine learning une fois le volume de données suffisant
- •Mettre en place un data catalog pour documenter les dimensions
- •Ajouter des tests d'intégration formels (mock de la DB complète)
- •Prévoir une architecture Lambda/Kappa pour le streaming
- •Renforcer la gouvernance des données et la qualité continue