Deuda técnica y rescate
¿Informes legacy que tardan 40 minutos en actualizarse? ¿Un modelo semántico que nadie se atreve a tocar? Diagnosticamos la causa raíz, refactorizamos el desorden y devolvemos tu producción al máximo frescor — sin tumbar el sistema.
Misiones de rescate comunes
- ⚡ Tiempos de actualización de horas → minutos
- ⚡ Medidas DAX rotas y dependencias circulares
- ⚡ Tablas duplicadas en 15 copias de libro
- ⚡ Actualizaciones programadas fallidas y problemas de gateway
- ⚡ Reconciliación de datos post-migración
Nuestro enfoque
- Perfilar y evaluar el estado actual
- Identificar los 3 cuellos de botella principales (usualmente el 80 % del dolor)
- Corregir en staging, validar con stakeholders
- Corte con plan de rollback — cero tiempo de inactividad
Entregables de ejemplo
Informe de recuperación de rendimiento
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
Línea de tiempo de análisis de causa raíz
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.
Limpieza del modelo de datos
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