Solución de problemas de rendimiento de DAX mediante DAX Studio
En la unidad 2, hemos aprendido que los datos del analizador de rendimiento se pueden analizar aún más en DAX Studio. Importe los datos de rendimiento en DAX Studio, donde puede ver, ordenar y filtrar todos los datos de rendimiento. También puede introducir una sola consulta en el editor, donde puede realizar ajustes en la consulta para mejorar el rendimiento.
Descripción del motor de VertiPaq
Antes de pasar a la optimización, es importante comprender lo que sucede bajo la capucha de Power BI. Utilizando algoritmos de compresión y un procesador de consultas multiproceso, el motor Analysis Services VertiPaq proporciona un acceso rápido a objetos y datos del modelo tabular mediante Power BI.
Power BI lee el contenido del origen de datos y lo transforma en la estructura de datos en columnas VertiPaq interna, donde cada columna está codificada y comprimida. Se crean diccionarios e índices para cada columna. Por último, se crean estructuras de datos para las relaciones y el cálculo y la compresión de las columnas calculadas.
Las consultas DAX se procesan mediante dos motores, el motor de fórmulas y el motor de almacenamiento. Hablaremos más sobre estos motores a continuación.
Descripción de DAX Studio
DAX Studio es una herramienta de código abierto para ejecutar consultas DAX en modelos de Power BI y Analysis Services. DAX Studio es útil para:
- Revisar el contenido del modelo de datos.
- Escritura y optimización de fórmulas y consultas DAX complejas.
Descargue e instale DAX Studio con la configuración predeterminada, conéctese al modelo de datos y empiece a trabajar en las consultas. Una vez instalado DAX Studio, también se puede iniciar desde la pestaña Herramientas externas de la cinta de opciones en Power BI Desktop.
Optimización del modelo de datos
Ahora que tiene una idea de cómo funciona el motor VertiPaq, vamos a analizar cómo puede usar DAX Studio para optimizar las consultas DAX que se ejecutan en este entorno.
Optimización de consultas DAX
Los cálculos que usan DAX, ya sea medidas o columnas, forman parte de una consulta DAX, que se procesa mediante dos motores de VertiPaq. Cuando se procesa una consulta, el motor de fórmulas procesa la solicitud, solicita al motor de almacenamiento los datos y realiza los cálculos necesarios. El motor de almacenamiento recupera y agrega los datos solicitados por el motor de fórmulas.
En el diagrama siguiente, la consulta DAX se envía al modelo tabular en los pasos 1 y 2. A continuación, el motor de fórmulas procesa la solicitud y se envía al motor de almacenamiento, representada por el paso 3. En el paso 4, el motor de almacenamiento recupera los datos del modelo y los almacena en memoria (para el modo de importación) o pasa la consulta al origen de datos (para DirectQuery). Para el modo de importación, la actualización de los datos recuperará los datos del origen.
La solución de problemas en DAX Studio le permite ver estadísticas detalladas en los intervalos de tiempo del servidor de la consulta. Puede ver la proporción de tiempo que tarda la consulta en cada motor y, a continuación, puede ajustar las consultas en consecuencia para mejorar el rendimiento.
Veamos un escenario para comprender cómo puede optimizar una consulta mediante DAX Studio.
Tiene un informe que contiene una matriz que visualiza 6 medidas. El director general le informa de que el objeto visual es lento para representarse y, por lo tanto, el informe no es utilizable. Empezará a profundizar y confirmará tiempos de representación lentos mediante el analizador de rendimiento en Power BI Desktop.
A continuación, copie la consulta para examinarla en DAX Studio para obtener más información sobre lo que podría estar causando el problema. En DAX Studio, borra la memoria caché(1), activa los intervalos del servidor (2) y, a continuación, ejecuta la consulta (3).
De arriba a abajo derecha, las estadísticas indican cuántos milisegundos tardó en ejecutar la consulta y la duración que tardó la CPU del motor de almacenamiento (SE). En este caso, el motor de fórmulas (FE) tardó el 73,5 % del tiempo, mientras que el SE tardó el 26,5 % restante del tiempo. Hubo 34 consultas SE individuales y 21 acciones de caché.
Desde aquí, puede investigar lo que en sus medidas podría estar causando los problemas. Esto requiere un conocimiento profundo de DAX y a veces es un caso de prueba y error.
Experimenta con las medidas y reconoce que mejorar la medida de ventas reemplazando instrucciones complicadas IF
en DAX por variables y una función de inteligencia de tiempo. Una manera segura de experimentar es comentar las medidas y volver a trabajarlas. Puede comentar las medidas escribiendo dos barras diagonales al principio de una línea (//
). Para los comentarios de varias filas, use /*
al principio del comentario y */
para cerrar el comentario.
Después de experimentar, borre la memoria caché y vuelva a ejecutar la consulta con las actualizaciones realizadas en la medida. Observa que la medida actualizada funciona mucho mejor, con casi un 50 % de reducción en el tiempo de ejecución de consultas.
Importante
El motor de almacenamiento almacena en caché los resultados en la memoria para su reutilización. Debido a esta memoria caché, es críticoborrar la memoria caché antes de ejecutar consultas en DAX Studio.
Visualización de métricas de modelo mediante VertiPaq Analyzer
Ver las métricas de VertiPaq Analyzer en DAX Studio es una excelente manera de obtener una vista general de lo que sucede en el modelo de datos. VertiPaq Analyzer informa del consumo de memoria del modelo de datos y se puede usar para identificar rápidamente dónde está gastando la mayor parte de la memoria. En resumen, puede usar VertiPaq Analyzer para que los delincuentes de memoria sean obvios, rectificarlos en Power BI y, a continuación, volver a ejecutar VertiPaq Analyzer para ver las ventajas inmediatas de las actualizaciones del modelo de datos.
Nota
El motor VertiPaq solo almacena datos en memoria en los modelos de importación. Si usa DirectQuery, el motor vertiPaq simplemente envía esa consulta al origen. Esto significa que ver las métricas del analizador de VertiPaq solo será útil para la importación o los modelos compuestos.
Puede ver el tamaño de la tabla, columnas, etc., en bytes. El archivo .pbix comprime aún más estos tamaños: los tamaños mostrados en bytes se evalúan antes de la compresión.
Para ver las métricas del modelo, inicie DAX Studio desde la pestaña herramientas externas de la cinta de opciones de Power BI y seleccione Ver métricas en la pestaña Avanzadas de DAX Studio.
El analizador de VertiPaq muestra una serie de métricas importantes sobre su modelo. Nos centraremos específicamente en el consumo de memoria y la cardinalidad. Para obtener una lista completa de lo que significa cada una de estas columnas, consulte la documentación de DAX Studio.
La visualización de métricas en DAX Studio le ayuda a encontrar y corregir problemas inmediatamente. En este caso, puede ver que el problema es una columna con cardinalidad alta. Después, puede corregir ese problema en Power BI, actualizar las métricas y ver inmediatamente los efectos de los cambios en el modelo.
Por ejemplo, observe que el modelo de la imagen siguiente contiene una tabla que consume el 99,6 % de la memoria de la base de datos. Al profundizar en la tabla, puede ver que dos columnas, Fecha de finalización y Fecha de inicio están rebajando la mayor parte de la memoria.
Eche un vistazo a esas dos columnas en Power BI Desktop y observe que son columnas de fecha y hora. Las columnas de fecha y hora tienen una cardinalidad alta inherentemente debido a todas las combinaciones posibles de fechas y horas.
El uso del Analizador de VertiPaq en DAX Studio puede ayudarle a identificar y eliminar fácilmente las columnas con cardinalidad alta (incluidos los tipos de datos decimales de fecha y hora automáticas y punto flotante) e identificar y quitar columnas que no se usan para nada.
Nota
Consulte la guía de optimización de Power BI para obtener información más detallada sobre cómo optimizar el modelo de datos.