Optimización de DAX para LuckyTemplates con DAX Studio: Formula Engines

Optimización de DAX para LuckyTemplates con DAX Studio: Formula Engines

Cuando está optimizando su modelo de datos y su DAX para LuckyTemplates, es útil recordar que hay dos motores funcionando detrás de escena: el motor de fórmula y el motor de almacenamiento .

Estos dos motores trabajan juntos para devolver los resultados necesarios al usuario. Proporcionan el conjunto de resultados en forma de una tabla o un valor de escala.

Tabla de contenido

El papel del motor de fórmula

En este artículo, nos centraremos en el motor de fórmulas.

El motor de fórmulas es el motor de nivel superior que administra toda la arquitectura de una consulta.

Independientemente de lo que haga al ejecutar una consulta o al crear una columna calculada o una tabla calculada, el motor de fórmulas se activa.

El motor de fórmulas comprende las consultas recibidas no solo en DAX, sino también en MDX. Por ejemplo, cuando usa Excel, crea modelos dinámicos basados ​​en tablas dinámicas, y las tablas dinámicas en realidad usan lenguaje MDX.

Aquí es donde entra en juego el motor de fórmulas. Debido a que comprende tanto DAX como MDX, puede usar otro modelo de LuckyTemplates. Las consultas enviadas desde este modelo de datos usarán DAX, mientras que las consultas provenientes del modelo dinámico usarán MDX.

Cómo funciona el motor de fórmulas

Comprender las consultas que se originan en la fuente MDX o la fuente DAX es solo un factor en el rendimiento del motor de fórmulas. También pasa por otros pasos para ayudarlo a trabajar en sus consultas.

Primero, tiene que generar un plan de consulta que el motor de almacenamiento entienda . Como motor de nivel inferior, el motor de almacenamiento en realidad no sabe si una tabla dinámica dentro de Excel o un objeto visual dentro de LuckyTemplates ejecutaron la consulta.

Al crear un plan de consulta, el motor de fórmulas crea primero un plan de consulta lógico y luego crea un plan de consulta físico. Tanto el plan de consulta lógico como el físico deben parecerse entre sí.

Después de completar el plan de consulta física, el usuario o la herramienta del cliente obtiene el conjunto de resultados. A partir de ahí, la herramienta del cliente dicta cómo utilizará los resultados o el conjunto de datos para mostrar el resultado final al usuario.

Principales limitaciones del motor de fórmula

El motor de fórmulas juega un papel muy importante cuando optimiza DAX para LuckyTemplates con DAX Studio. Sin embargo, también viene con algunas limitaciones.

En primer lugar, el motor de fórmulas siempre usa un solo núcleo para administrar toda su operación, independientemente de cuántos núcleos de CPU estén disponibles en su sistema .

Cuando abro mi Administrador de tareas, verá que mi CPU tiene seis núcleos.

Optimización de DAX para LuckyTemplates con DAX Studio: Formula Engines

A pesar de este hecho, el motor de fórmula seguirá eligiendo uno de esos seis núcleos para trabajar, mientras que deja que el motor de almacenamiento use el resto.

En segundo lugar, el motor de fórmulas no tiene acceso directo a su base de datos . Debido a esta limitación, tendría que almacenar datos dentro de la memoria interna, o puede almacenarlos en la base de datos y crear una DirectQuery sobre esa base de datos.

También se basa en el motor de almacenamiento para obtener los datos en forma de caché de datos. Luego, el motor de fórmula itera sobre ese caché de datos para continuar antes de que pueda proporcionar resultados al usuario final.

Cómo Formula Engine ayuda a optimizar DAX para LuckyTemplates

A veces, cuando intenta optimizar su modelo de datos o su DAX para LuckyTemplates, notará que el motor de almacenamiento se ralentiza a medida que ejecuta las consultas. En este caso, puede usar el motor de fórmulas para completar todo el cálculo y optimizar el proceso.

Tenga en cuenta que si el motor de fórmulas termina construyendo la tabla completa por sí solo, el conjunto de resultados creado en el proceso no se utilizará en las consultas posteriores que generará la herramienta del cliente si son similares a las consultas ejecutadas anteriormente . Pero en caso de que el motor de almacenamiento proporcione el caché de datos, ese caché de datos en particular se puede mantener en la memoria para que pueda optimizar las solicitudes provenientes de la herramienta del cliente.

¿Cómo funcionará eso?

Digamos que escribimos una consulta para que la ejecute completamente el motor de almacenamiento, pero con algunos aspectos para que los calcule el motor de fórmulas. En este caso, el motor de almacenamiento enviará un caché de datos al motor de fórmulas y ese caché de datos (en caso de que sea simple) se puede mantener en la memoria.

Ahora, si aparece una consulta similar unos segundos más tarde, en lugar de escanear todo el modelo de datos una vez más, el motor de fórmulas o el motor de almacenamiento usará esa caché de datos en particular para que el tiempo de consulta pueda reducirse y la experiencia del usuario pueda mejorarse. mejorado.

Reducción de la carga en el motor de fórmula

De nuevo, el motor de fórmulas entiende los códigos DAX y MDX.

Entonces, si usa , y otras tareas, el motor de fórmulas conoce todas las funciones que está usando dentro del lenguaje DAX y podrá resolverlas por sí solo. Sin embargo, esto podría afectar el rendimiento de la consulta, especialmente porque el motor de fórmulas intenta hacer todo con un solo núcleo.

Es por eso que también debemos tener en cuenta la reducción de la carga en el motor de fórmula y el aumento de la carga en el motor de almacenamiento.

Un buen ejemplo de cuán diferente es el cálculo dentro del motor de fórmulas frente al motor de almacenamiento sería el uso de CROSSJOIN frente a .

Cuando usa CROSSJOIN, solo una cantidad limitada de datos pasará por el motor de almacenamiento. En cuanto al resto del cálculo, todo será realizado por el motor de fórmulas. En comparación, usar SUMMARIZE significa ejecutar la consulta completa dentro del motor de almacenamiento.

Por supuesto, esto también dependería de cómo se use SUMMARIZE.

Si se usa SUMMARIZE como la función más interna, entonces definitivamente se trasladará al motor de almacenamiento. Pero en algunos casos, SUMMARIZE se usa junto con un código diferente que requiere que funcione el motor de fórmulas. En este caso, el motor de fórmulas intervendrá y hará el trabajo.

Saber adónde va la carga puede ayudarlo a optimizar el rendimiento de su consulta, especialmente cuando tiene en cuenta cuál es la capacidad y las limitaciones de los motores que tiene a su disposición.

Herramientas que pueden ayudar a optimizar DAX para LuckyTemplates

Optimizar DAX será más fácil si maximiza las herramientas que lo hacen posible. DAX Studio es una de esas herramientas.

Tomemos el ejemplo anterior donde el motor de fórmulas asume toda la carga de completar el cálculo cuando se usa la función RESUMEN. DAX Studio puede ayudarlo a reescribir su código de una manera que inserte SUMMARIZE en el motor de almacenamiento, liberando la carga en el motor de fórmulas. Esto mejora potencialmente el rendimiento de su modelo de datos y consultas.

Por supuesto, esto debería funcionar a la perfección para consultas simples. También hay escenarios más complicados.

Por ejemplo, puede crear modelos compuestos que utilicen dos motores de almacenamiento dentro del propio modelo de datos. Uno podría ser para Vertipaq, mientras que el otro sería para DirectQuery. En este caso, su base de datos debe optimizarse de manera que las consultas generadas se construyan para ese modelo de datos relacional específico.

Supongamos que tiene dos tablas dentro de su modelo de fecha: la tabla Productos y la tabla Ventas. La tabla Productos está en el almacenamiento de Vertipaq, mientras que la tabla Ventas, al ser una tabla más grande, se almacena directamente dentro de la base de datos a través de una conexión DirectQuery.

Supongamos también que está arrastrando la columna Marca a la matriz, así como la medida Ventas totales que proviene de la tabla Ventas dentro de la conexión de DirectQuery.

En este caso, el motor fórmula deberá realizar la operación entre ambos motores.

Primero, recuperará las columnas Clave de producto y Marca de la tabla Productos. Luego, recuperará las columnas Precio neto, Cantidad y Clave de producto de la tabla Ventas. Una vez que tenga el caché de datos de Vertipaq y DirectQuery, el motor de fórmulas tendrá que tomar el caché de datos e intentar unirlos para proporcionar los resultados al usuario final.


Lecciones y técnicas de optimización de consultas DAX
Rendimiento de consultas y configuración de DAX Studio
Optimización DAX: dónde encontrar la trampa DAX oculta

Conclusión

El motor de fórmulas realmente juega un papel muy importante cuando se trabaja con DAX. Sin embargo, es fundamental entender cómo funciona primero antes de comenzar. Dominar cómo hacer que el motor de fórmulas y el motor de almacenamiento funcionen juntos sin problemas es clave, especialmente si desea que sus consultas DAX funcionen mejor.

Como motor de nivel superior dentro de la arquitectura de los servicios de análisis, el motor de fórmulas tiene que realizar muchas operaciones. Pero una vez que también comprenda los entresijos del motor de almacenamiento, puede averiguar qué operación insertar en el motor de almacenamiento y cuál dejar dentro del motor de fórmula.

Profundizaremos en el motor de almacenamiento en un tutorial separado.

Mis mejores deseos,


Qué es uno mismo en Python: ejemplos del mundo real

Qué es uno mismo en Python: ejemplos del mundo real

Qué es uno mismo en Python: ejemplos del mundo real

Cómo guardar y cargar un archivo RDS en R

Cómo guardar y cargar un archivo RDS en R

Aprenderá a guardar y cargar objetos desde un archivo .rds en R. Este blog también cubrirá cómo importar objetos desde R a LuckyTemplates.

Revisión de los primeros N días hábiles: una solución de lenguaje de codificación DAX

Revisión de los primeros N días hábiles: una solución de lenguaje de codificación DAX

En este tutorial del lenguaje de codificación DAX, aprenda a usar la función GENERAR y a cambiar dinámicamente el título de una medida.

Showcase Insights utilizando la técnica de elementos visuales dinámicos de subprocesos múltiples en LuckyTemplates

Showcase Insights utilizando la técnica de elementos visuales dinámicos de subprocesos múltiples en LuckyTemplates

Este tutorial cubrirá cómo usar la técnica de elementos visuales dinámicos de subprocesos múltiples para crear información a partir de visualizaciones de datos dinámicos en sus informes.

Introducción al contexto de filtro en LuckyTemplates

Introducción al contexto de filtro en LuckyTemplates

En este artículo, repasaré el contexto del filtro. El contexto del filtro es uno de los temas principales que cualquier usuario de LuckyTemplates debería conocer inicialmente.

Los mejores consejos para usar las aplicaciones en el servicio en línea de LuckyTemplates

Los mejores consejos para usar las aplicaciones en el servicio en línea de LuckyTemplates

Quiero mostrar cómo el servicio en línea de LuckyTemplates Apps puede ayudar a administrar diferentes informes e información generada a partir de varias fuentes.

Analice los cambios en el margen de beneficio a lo largo del tiempo: análisis con LuckyTemplates y DAX

Analice los cambios en el margen de beneficio a lo largo del tiempo: análisis con LuckyTemplates y DAX

Aprenda a calcular los cambios de su margen de beneficio utilizando técnicas como la bifurcación de medidas y la combinación de fórmulas DAX en LuckyTemplates.

Ideas de materialización para cachés de datos en DAX Studio

Ideas de materialización para cachés de datos en DAX Studio

Este tutorial analizará las ideas de materialización de cachés de datos y cómo afectan el rendimiento de DAX al proporcionar resultados.

Informes comerciales con LuckyTemplates

Informes comerciales con LuckyTemplates

Si todavía usa Excel hasta ahora, este es el mejor momento para comenzar a usar LuckyTemplates para sus necesidades de informes comerciales.

¿Qué es la puerta de enlace de LuckyTemplates? Todo lo que necesitas saber

¿Qué es la puerta de enlace de LuckyTemplates? Todo lo que necesitas saber

¿Qué es la puerta de enlace de LuckyTemplates? Todo lo que necesitas saber