Si un informe de Power BI hace esperar 30 segundos, a las tres semanas el usuario deja de abrirlo. La lentitud no es solo una prueba de paciencia: es enemiga de la adopción. La buena noticia es que en el 80% de los informes lentos, entre tres y cinco mejoras concretas pueden reducir a la mitad el tiempo de apertura. En este artículo repasamos diez técnicas prácticas, del motor VertiPaq al diseño de los visuales.
01. Saque del modelo las columnas innecesarias
Cada columna que importa al modelo ocupa memoria y se indexa. Las columnas añadidas «por si acaso», sobre todo si no son comprimibles o son texto de alta cardinalidad (nombre de cliente, dirección), pueden hinchar el modelo entre tres y cinco veces.
Principio: la columna que el informe no usa no debe estar en el modelo. Hay que descartarla en Power Query y no arrastrarla a las tablas calculadas.
02. Divida las columnas de alta cardinalidad
Una columna de fecha y hora guardada hasta el microsegundo es una catástrofe para VertiPaq. Si la separa en una columna de fecha y otra de hora, ambas quedan con baja cardinalidad y la compresión mejora de forma espectacular.
La misma lógica sirve para los precios: si bastan dos o tres decimales, redondee el resto. Un ahorro de memoria invisible pero decisivo.
03. No use columnas calculadas donde corresponde una medida
En DAX se puede calcular en dos sitios: la columna calculada y la medida. La regla es preferir siempre la medida.
La columna calculada se calcula por adelantado para cada fila y se guarda en el modelo (no se comprime y ocupa memoria). La medida se ejecuta en el momento de la consulta, responde a los filtros y no aumenta el tamaño del modelo. La excepción: para un segmentador basado en una dimensión sí se necesita una columna calculada.
04. Sustituya las cadenas de IF por SWITCH
Encadenar llamadas a IF() es difícil de leer y caro de calcular. La estructura SWITCH(TRUE()) es más legible y el motor la optimiza mejor:
Mal: IF([A]>10, "H", IF([A]>5, "M", IF([A]>1, "L", "N")))
Bien: SWITCH(TRUE(), [A]>10, "H", [A]>5, "M", [A]>1, "L", "N")
Un cambio pequeño que en medidas grandes se traduce en una aceleración medible.
05. Use KEEPFILTERS en lugar de FILTER
La combinación CALCULATE + FILTER dentro de una medida es clásica, pero FILTER recorre todas las filas de la tabla. Para comparaciones sencillas, KEEPFILTERS es más eficiente:
Mal: CALCULATE([Sales], FILTER(Products, Products[Category] = "Electronics"))
Bien: CALCULATE([Sales], KEEPFILTERS(Products[Category] = "Electronics"))
Para medir la diferencia puede usarse la herramienta Query Plan de DAX Studio.
06. Monte un esquema en estrella (evite copo de nieve y modelo plano)
El esquema en estrella es ideal para la matemática de compresión de VertiPaq. El copo de nieve ralentiza; el modelo plano dispara la memoria. Esta es la decisión fundamental al construir el modelo.
Para el detalle puede consultar nuestro artículo El modelo de datos en Power BI: esquema en estrella.
07. Evite las relaciones bidireccionales
Poner las relaciones en ambos sentidos parece tentador, pero obliga al motor de consultas a resolver uniones complejas. La relación unidireccional es más rápida y más predecible.
En la mayoría de los escenarios donde parece necesaria la bidireccionalidad, se puede activar ese comportamiento de forma local dentro de la medida con CROSSFILTER(); no hace falta dejarla fija en el modelo.
08. Limite el número de visuales
Tener más de veinte visuales en una página cansa tanto al usuario como al motor de consultas. Cada visual se convierte en una consulta distinta y todo lo que aparece en pantalla se calcula en paralelo.
Regla: entre ocho y doce visuales por página es lo óptimo. Lo demás debe ir a páginas secundarias o a vistas de detalle.
09. Use agregaciones
Aunque su tabla de hechos tenga mil millones de filas, no siempre hace falta el detalle. La vista general suele conformarse con el total mensual. La función de agregaciones calcula por adelantado los totales más usados y los mantiene en memoria, respondiendo desde esa tabla resumen en lugar de la tabla de hechos principal.
Es posible acelerar entre diez y cien veces, pero la configuración exige cuidado: cada medida debe delegar correctamente en cada dimensión.
10. Use la actualización incremental
Volver a traer desde cero una tabla de hechos de millones de filas en cada actualización es innecesario. La actualización incremental refresca solo los datos de los últimos X días y mantiene en caché las particiones antiguas.
En una tabla particionada por meses, el tiempo de actualización baja de horas a minutos. Está disponible con licencia Power BI Premium (y Fabric); en Power BI Pro el soporte es limitado.
Explore nuestra solución de Power BI
Puede reservar una consultoría gratuita para obtener información detallada.