Errores Comunes en Modelado
Los 10 errores más frecuentes que hacen que un modelo Power BI sea lento, incorrecto o difícil de mantener — y cómo evitarlos desde el principio
Los 10 Errores Más Frecuentes
Modelo sin esquema estrella
Cargar las tablas tal cual vienen del origen (modelo copo de nieve normalizado o peor, una única tabla gigante desnormalizada) sin diseñar el modelo analítico. Las consultas DAX se vuelven lentas y los cálculos son difíciles de escribir correctamente.
No tener tabla de fechas dedicada
Usar directamente la columna de fecha de la tabla de hechos para análisis temporal. La inteligencia de tiempo (TOTALYTD, SAMEPERIODLASTYEAR, etc.) no funciona correctamente y no puedes añadir atributos personalizados como festivos o semanas fiscales.
CALENDARAUTO() o CALENDAR(), añade todas las columnas necesarias (año, mes, trimestre, etc.) y márcala como tabla de fechas.Relaciones bidireccionales innecesarias
Activar la dirección de filtro bidireccional en todas las relaciones "para que los slicers funcionen mejor". Esto puede causar resultados incorrectos en medidas DAX, bucles de filtro ambiguos y degradación del rendimiento.
Todo en una sola tabla desnormalizada
Cargar un Excel o CSV con todos los atributos y métricas en una sola tabla "plana" — cliente, producto, fecha, región y métricas todo mezclado. Esto produce alta cardinalidad en todas las columnas, mal rendimiento y DAX imposible de escribir.
Cargar todas las columnas del origen
Importar todas las columnas disponibles "por si acaso las necesito luego". Esto aumenta el tamaño del modelo, ralentiza las actualizaciones y puede incluir columnas de alta cardinalidad que degradan el rendimiento sin ningún beneficio.
Columnas calculadas donde deberían ser medidas
Crear columnas calculadas para totales, ratios o cálculos que dependen del contexto del informe: Total Ventas = SUM(FactVentas[Importe]) como columna calculada. El resultado no varía según los filtros del visual — siempre muestra el total global.
Claves foráneas de texto en lugar de enteros
Usar columnas de texto como claves de relación: FactVentas[CodigoProducto] = "PROD-ESP-0507". Las comparaciones de texto son más lentas que las de enteros y las columnas de texto con valores únicos se comprimen peor en VertiPaq.
Columnas DateTime sin separar fecha y hora
Mantener columnas de tipo DateTime (fecha + hora) cuando solo necesitas la fecha, o mantener la precisión de segundos cuando solo necesitas la hora. Cada valor único de DateTime cuenta para la cardinalidad — una columna con marcas de tiempo únicas puede tener millones de valores distintos.
Date.From([FechaHora]) para la fecha y Time.Hour([FechaHora]) para la hora (o elimina la hora si no la necesitas). Luego elimina la columna DateTime original.Medidas dispersas por todas las tablas
Crear medidas directamente en las tablas de hechos o dimensiones sin organización. Con el tiempo, el modelo acumula medidas en diferentes tablas y es difícil saber dónde está cada una o si hay duplicados.
= #table({},{}) o = Table.FromRows({})). Nómbrala _Medidas (el guion bajo la pone al principio en el panel de campos). Organiza las medidas en subcarpetas.Relaciones ambiguas o rutas de filtro conflictivas
Crear múltiples caminos de relación entre las mismas tablas (por ejemplo, FactVentas relacionada con DimCliente directamente Y también indirectamente a través de DimPedido). Esto crea ambigüedad en el contexto de filtro y DAX puede producir resultados incorrectos o errores.