Dette technique et sauvetage
Des rapports legacy qui prennent 40 minutes à rafraîchir? Un modèle sémantique que personne n'ose toucher? On diagnostique la cause racine, refactorise le chaos et remet la production au frais — sans faire tomber le système.
Missions de sauvetage courantes
- ⚡ Temps de rafraîchissement de heures → minutes
- ⚡ Mesures DAX cassées et dépendances circulaires
- ⚡ Tables dupliquées dans 15 copies de classeur
- ⚡ Rafraîchissements planifiés échoués et problèmes de passerelle
- ⚡ Réconciliation de données post-migration
Notre approche
- Profiler et benchmarker l'état actuel
- Identifier les 3 principaux goulots (souvent 80 % de la douleur)
- Corriger en staging, valider avec les parties prenantes
- Bascule avec plan de retour arrière — zéro interruption
Exemples de livrables
Rapport de récupération de performance
Before (Week 0)
Report refresh42 min
Failed queries / day23%
Model size2.1 GB
Duplicate measures47
User complaints / wk12
After (Week 6)
Report refresh4 min ▼90%
Failed queries / day1% ▼96%
Model size680 MB ▼68%
Duplicate measures0
User complaints / wk0
Chronologie d'analyse de cause racine
09:14
Alert: refresh failed 3x consecutively
Gateway timeout after 30 min
09:45
Diagnosis: cartesian product in fact join
Sales × Promotions = 840M rows inflated
11:20
Fix: bridge table + inactive relationship
Deployed to staging, validated by finance
14:00
Production cutover — refresh in 3m 48s
Rollback window closed. Incident resolved.
Nettoyage du modèle de données
Legacy model (v14)
Tables: 34 (12 hidden duplicates) Relationships: 28 (4 bi-directional ⚠) Measures: 112 (47 duplicates) Calculated cols: 89 ← should be in ETL Import mode: 2.1 GB Refresh: Import all tables
Refactored model (v15)
Tables: 18 (star schema) Relationships: 16 (all single-direction) Measures: 65 (documented, grouped) Calculated cols: 12 (display only) Import mode: 680 MB Refresh: Incremental on facts