Nivel 1 · El motor de almacenamiento y el motor de fórmulas
0 de 3
La solicitud

De Amanda Price, Jefa de e-commerce
Tu objetivo
Elige la afirmación que describe correctamente los dos motores que evalúan DAX en Power BI.
Lo que recibe Amanda, y por qué
La lección
Cuando un informe es lento, “Power BI es lento” es el diagnóstico menos útil. Detrás de cada visual hay una cadena: se envía una consulta, se evalúa DAX, se recorren datos, se dibuja el visual. Un eslabón débil frena todo, y el primer trabajo es encontrarlo.
Dónde estás trabajando
Este es un cuestionario. Los niveles siguientes te dan medidas que reescribir en un motor de práctica en esta página. Para cronometrar un informe real en Power BI Desktop: Optimizar → Analizador de rendimiento (Optimize → Performance analyzer; en versiones antiguas Vista → Analizador de rendimiento), Iniciar grabación (Start recording) y luego Actualizar objetos visuales (Refresh visuals) o haz clic en una segmentación. Cada visual recibe una línea con su tiempo total, dividido en Consulta DAX (DAX query), Visualización de objeto visual (Visual display) y Otro (Other; espera a otros visuales). Un número grande en la consulta DAX apunta al modelo o a la medida; un número grande en la visualización apunta a un visual con demasiados puntos.
Dos motores detrás de cada consulta DAX
El motor de almacenamiento (SE). En un modelo Import es VertiPaq, el almacén columnar en memoria. Cada columna se comprime por separado, y el motor de almacenamiento recorre esas columnas muy rápido y en todos los núcleos de CPU. Se le dan bien unas pocas cosas sencillas: filtrar una columna por valores, agrupar por columnas y agregar con SUM, COUNT, MIN, MAX y DISTINCTCOUNT. En DirectQuery, ese mismo papel lo hace la base de datos de origen al recibir SQL.
El motor de fórmulas (FE). Lee tu DAX, elabora un plan, envía las partes sencillas al motor de almacenamiento y hace el resto él mismo: expresiones complejas por fila dentro de iteradores, lógica de IF y SWITCH, transición de contexto, combinar los resultados. Se ejecuta en un solo hilo y trabaja con tablas intermedias sin comprimir.
Qué empuja el trabajo hacia el motor lento
FILTERsobre toda una tabla de hechos con condiciones que el motor de almacenamiento no puede tomar como un simple filtro de columna, y luego un iterador sobre el resultado.- Iterar millones de filas y llamar a una medida por cada fila (una transición de contexto por fila).
- Tablas intermedias grandes que el motor de fórmulas tiene que construir y mantener.
Una medida como CALCULATE(SUM(order_items[line_total]), orders[status] = "completed") es un filtro de
columna más una suma: casi todo motor de almacenamiento. El mismo número escrito como
SUMX(FILTER(order_items, RELATED(orders[status]) = "completed"), order_items[line_total]) construye
primero una tabla filtrada de líneas de pedido. Con 30,000 filas nadie lo nota; con 30 millones la
diferencia suele ser de diez a cien veces.
Ver el reparto
En el Analizador de rendimiento, Copiar consulta (Copy query) del visual lento y pégala en la vista de consulta DAX (DAX query view; el cuarto icono del carril izquierdo) o en la herramienta gratuita DAX Studio, donde Server Timings muestra cuántos milisegundos fueron a cada motor y cuántas consultas del motor de almacenamiento se ejecutaron.
Errores comunes
- Optimizar antes de medir. Encuentra primero el visual lento.
- Probar con una muestra pequeña. Los problemas aparecen con el volumen completo de datos.
- Demasiados visuales en una página. Cada uno envía su propia consulta; veinte tarjetas son veinte consultas.
¡Linterna encendida!
Practicaste: performancestorage engineformula enginevertipaqperformance analyzer
- Resuelto
- Sin pistas
- Al primer intento
