⚠️

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

Principiante Intermedio
🚨

Los 10 Errores Más Frecuentes

#1

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.

Solución: Diseña siempre el esquema estrella. Identifica tablas de hechos y dimensiones. Aplana las dimensiones en Power Query. La tabla de hechos solo debe tener claves foráneas (enteros) y métricas numéricas.
#2

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.

Solución: Crea siempre una tabla de fechas dedicada con CALENDARAUTO() o CALENDAR(), añade todas las columnas necesarias (año, mes, trimestre, etc.) y márcala como tabla de fechas.
#3

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.

Solución: Usa filtros unidireccionales (de dimensión a hechos) siempre que sea posible. La bidireccionalidad solo tiene sentido para relaciones N:N con bridge tables o ciertos patrones de RLS. Si crees que la necesitas, pregúntate primero si el problema puede resolverse de otra manera.
#4

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.

Solución: Separa siempre hechos de dimensiones. Una tabla plana con todas las ventas incluyendo nombre de cliente, producto, categoría, etc. debe transformarse en Power Query en: FactVentas + DimCliente + DimProducto + DimFecha.
#5

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.

Solución: En Power Query, usa "Elegir columnas" y selecciona solo las que realmente necesitas. Elimina explícitamente las columnas técnicas (audit columns, IDs internos, etc.). Esto es especialmente importante en tablas de hechos con muchas columnas.
#6

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.

Solución: Usa medidas para cualquier cálculo que deba responder a filtros o slicers. Recuerda: si la fórmula termina en SUM, COUNT, AVERAGE u otra agregación → medida. Si describe un atributo fijo por fila → columna calculada o mejor hacerlo en Power Query.
#7

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.

Solución: Usa siempre enteros (INT) como claves de relación. Si tu origen usa claves de texto, crea una clave entera sustituta (surrogate key) en Power Query. Guarda el código original como atributo descriptivo, no como clave de relación.
#8

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.

Solución: En Power Query, divide la columna en dos: 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.
#9

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.

Solución: Crea una tabla vacía dedicada para medidas (en Power Query: = #table({},{}) o = Table.FromRows({})). Nómbrala _Medidas (el guion bajo la pone al principio en el panel de campos). Organiza las medidas en subcarpetas.
#10

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.

Solución: En un esquema estrella bien diseñado, las tablas de hechos y dimensiones se conectan directamente — sin caminos alternativos. Si necesitas filtrar una tabla de hechos por atributos de dos caminos posibles, diseña explícitamente cuál usar y aplica relaciones inactivas con USERELATIONSHIP cuando sea necesario.
💡 Tip kawaii: Si heredas un modelo Power BI con problemas de rendimiento, empieza revisando estos 10 errores en orden. En el 80% de los casos, los primeros 5 (sin esquema estrella, sin tabla de fechas, bidireccional innecesario, todo en una tabla, columnas innecesarias) son la causa raíz del problema. ¡Diagnostica antes de optimizar! 🌸
🚀 ¡Errores identificados, modelo sano! Has completado toda la sección de Modelado de Datos. Para convertirte en un experto completo, el siguiente paso es dominar las funciones de filtro DAX (CALCULATE, ALL, FILTER) que interactúan directamente con el modelo.