El problema: Tu DAX está haciendo demasiado trabajo
Power BI es rápido cuando le das instrucciones claras. Pero cuando le pides que calcule algo cada vez que alguien hace scroll en un gráfico, o cuando usas una columna calculada donde debería haber una medida, entonces sí: ahí empiezan los 10 segundos de espera.
La mayoría de las veces, el cuello de botella no es Power BI. Es tu DAX. Punto.
Truco 1: Columnas calculadas vs. Medidas (y por qué importa)
Aquí está la diferencia: una columna calculada se ejecuta para cada fila de la tabla cuando carga el modelo. Una medida se calcula solo cuando la necesitas en un visual.
Si tienes 10 millones de filas y escribes una columna calculada para multiplicar dos campos, Power BI va a sudar. Porque está haciendo esa multiplicación 10 millones de veces. Ahora.
La solución: convierte esa columna en una medida DAX. Así solo se calcula cuando un visual la pide.
-- ❌ LENTO: Columna calculada
Total Ventas = [Cantidad] * [Precio]
-- ✅ RÁPIDO: Medida
Total Ventas = SUMPRODUCT([Cantidad], [Precio]) La diferencia en un proyecto mediano es de segundos. En uno grande, es de minutos.
Truco 2: CALCULATE sin filtros extra = rendimiento exponencial
CALCULATE es tu mejor amigo, pero también tu peor enemigo si la usas mal. Cada filtro que añades a CALCULATE hace que Power BI tenga que evaluar combinaciones más complejas.
Evita esto:
-- ❌ LENTO: Muchos filtros en CALCULATE
Ventas Este Año = CALCULATE(
SUM([Ventas]),
FILTER(ALL('Calendario'), YEAR([Fecha]) = YEAR(TODAY())),
FILTER(ALL('Productos'), [Categoría] = "Electrónica"),
FILTER(ALL('Clientes'), [País] = "España")
) En su lugar, usa variables o deja que el contexto del visual haga el trabajo:
-- ✅ RÁPIDO: Variables y contexto limpio
Ventas Este Año =
VAR YearActual = YEAR(TODAY())
RETURN
CALCULATE(
SUM([Ventas]),
YEAR('Calendario'[Fecha]) = YearActual
) Las variables cachean los valores, así que Power BI no tiene que recalcularlos mil veces.
Truco 3: Dimensionalidad implícita vs. explícita
Power BI tiene relaciones entre tablas. Úsalas. No hagas LOOKUPS manuales o FILTERs complejos cuando una relación puede hacer el trabajo por ti.
Si tienes una tabla de Ventas relacionada con una tabla de Clientes, y necesitas el país de cada cliente, no hagas esto:
-- ❌ LENTO: Búsqueda manual
País Cliente =
LOOKUPVALUE(
'Clientes'[País],
'Clientes'[ID], [ClienteID]
) Usa RELATED, que ya entiende la relación:
-- ✅ RÁPIDO: RELATED respeta relaciones
País Cliente = RELATED('Clientes'[País]) RELATED es literalmente 10 veces más rápido porque Power BI ya tiene la relación cacheada.
Errores comunes que ralentizan todo
- No usar Table/List de variables: Si necesitas iterar un conjunto de datos muchas veces, guárdalo en una variable tabla. Power BI lo mantendrá en memoria.
- CALCULATE anidado: Si tienes CALCULATE dentro de CALCULATE dentro de CALCULATE, algo está yendo mal. Simplifica con variables.
- Filtros en el modelo vs. en las medidas: Los filtros en el modelo se aplican a todas las medidas. Si solo necesitas uno en una medida específica, úsalo ahí.
- Evitar ALL() sin razón: ALL() elimina todos los filtros. Si solo necesitas eliminar uno, usa REMOVEFILTERS().
Pro Tip: Usa DAX Studio para encontrar el culpable
DAX Studio
Descarga DAX Studio (gratis). Conecta a tu archivo y ejecuta cada medida con el Studio abierto. Verás exactamente cuánto tarda cada una y cuál es la que te está matando el rendimiento. Atajo: Alt + X en Power BI abre el servidor local. DAX Studio se conecta automáticamente.
Resumiendo (porque la vida es corta)
Si tu informe va lento:
- Convierte columnas calculadas innecesarias en medidas.
- Limpia tus CALCULATE: usa variables y menos filtros.
- Usa RELATED en lugar de LOOKUPVALUE cuando haya relaciones.
- Abre DAX Studio y ve qué medida está tardando más de lo que debería.
Aplicando estos tres trucos, la mayoría de informes pasan de "algo lento" a "rápido" en cuestión de minutos. El tiempo que ahorres consultando datos en lugar de esperarlos lo vas a agradecer.