Medir en LuckyTemplates: Sugerencias y técnicas de optimización

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

En este tutorial, aprenderá a optimizar una medida en LuckyTemplates. La optimización de las medidas en su informe mejora el rendimiento de sus códigos en la producción de información y datos valiosos. También aprenderá sobre los diferentes métodos de evaluación y cómo aplicarlos para optimizar su informe. Puedes ver el video completo de este tutorial en la parte inferior de este blog.

Tabla de contenido

1. Analizar el rendimiento del código

En este ejemplo, necesita optimizar este informe:

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

Este es el modelo de datos que vas a utilizar:

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

La tabla Trabajos contiene toda la información relativa a cualquier trabajo que se haya realizado en un período de tiempo determinado.

Esta tabla es la base de todas las medidas que vas a optimizar:

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

En primer lugar, debe probar el rendimiento del informe.

Vaya a la pestaña Ver y seleccione Analizador de rendimiento . Luego, haga clic en Iniciar grabación y actualizar imágenes . Espere a que el analizador represente la imagen.

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

Una vez hecho esto, despliegue la lista Desglose de incentivos y haga clic en Copiar consulta .

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

A continuación, seleccione Herramientas externas para ir a DAX Studio y ver el código que generó LuckyTemplates.

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

Luego, pegue la consulta copiada dentro del espacio de trabajo.

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

Variables en la medida

La primera variable es DateClosed , que es la segmentación del tablero. Utiliza una columna de la tabla Fact para obtener los valores de ciertos períodos en la segmentación.

La siguiente variable es JobLost , que comprueba si los datos de Job Lost son falsos o están en blanco.

La última variable es MatrixVisual . Este es el corazón del código. Muestra la columna resumida generada por LuckyTemplates para rellenar objetos visuales de matriz. Agrupa el Job Loss Type en esta matriz e inyecta los filtros provenientes de los slicers. Luego, agrega columnas extendidas.

Una vez que la columna de resumen complete la ejecución, verá los resultados en el panel debajo del código.

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

LuckyTemplates usa el resultado para rellenar objetos visuales de matriz.

Caché en frío para DAX Studio

A continuación, debe verificar el tiempo necesario para ejecutar todo el código. Para hacer eso, active los tiempos del servidor y luego elija Borrar caché y luego ejecutar .

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

Cuando intenta optimizar una medida en LuckyTemplates con DAX Studio , es mejor operar en el escenario de caché en frío para que el tiempo que obtenga sea el correcto. Después de eso, presione F5 y espere a que se complete la operación en la pestaña Tiempos del servidor .

Una vez que se completa, puede ver que el tiempo total de ejecución es de 3,6 segundos. Pasó la mayor parte del tiempo en el motor de fórmula y pasó 57 milisegundos en el motor de almacenamiento.

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

También puede ver que encontró 383 consultas del motor de almacenamiento. De todas esas consultas, hay 327 que se lanzan en la memoria para que puedan ser reutilizadas.

2. Analizar una medida en LuckyTemplates

A continuación, debe optimizar estas 3 medidas idénticas.

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

Debe extraer estas medidas en un archivo diferente y conectarlo al modelo de datos que está utilizando.

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

Después de eso, inicie Server Timings para ver el tiempo que tardan las 3 medidas en completar las imágenes.

Los resultados de la ejecución muestran que las medidas consumen 1,85 segundos para recuperar un resultado.

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

El resultado muestra una tabla que consta de 10 filas y 3 columnas extendidas que pertenecen a las columnas resumidas.

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

La columna Tipo de pérdida contiene 10 valores únicos que el código calcula para obtener los porcentajes de incentivo.

El tiempo que tarda el código es exponencialmente alto. Aquí es donde y cuando necesita optimizarlos.

La medida de porcentaje de incentivo RB en LuckyTemplates

Esta es una medida de % de incentivo RB en LuckyTemplates. Es una de las 3 medidas principales utilizadas en este ejemplo.

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

Puede ver que está tratando de calcular el porcentaje de incentivo.

Tiene una variable, JobType, que recupera el valor de Lost Type en el contexto de filtro actual. También comprueba si solo hay un único valor visible en el contexto de filtro actual. Debe usar una función  que cada vez que se cumpla una condición, dé el resultado correspondiente.

Este código de medida genera mucha grasa de motor de almacenamiento lo que aumenta el tiempo en la duración total del código.

Ahora, regrese a DAX Studio para verificar la cantidad de consultas del motor de almacenamiento que genera la medida.

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

Puede ver que se necesitaron 600 milisegundos para ejecutarse y 43 consultas del motor de almacenamiento para simplemente recuperar datos para las 10 filas.

Datos del motor de almacenamiento

Ahora, verifique los datos que se solicitan desde el motor de almacenamiento. En la primera consulta, hay un tipo de pérdida de trabajos y DCOUNT  del tipo de pérdida de trabajos.

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

La siguiente consulta tiene Fecha de cierre de trabajos, que proviene de la segmentación del informe.

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

En el tercer código, verá otro tipo de pérdida de trabajos con el ID de datos de devolución de llamada.

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

En otra línea, verás las líneas de código más importantes.

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

Lo primero que ve es la del pago de trabajos recibido, facturado y gastos reales.

La siguiente es la función WHERE  que establece una condición y su resultado correspondiente. El resultado variará según la selección de la segmentación y la declaración de cambio en la medida % de incentivo de RB.

También notará que el código en las líneas 12 y 14 es el mismo.

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

Si te desplazas hacia la derecha, puedes ver que hay líneas con las mismas consultas. Las consultas en las líneas están dirigidas por la declaración de cambio en la medida RB Incentive%.

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

Si vuelve a la medida RB Incentive% en LuckyTemplates, puede ver la cantidad de veces que se repite una consulta y cómo se refleja en las consultas del motor de almacenamiento.

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

La lógica detrás de IF y Switch

Ahora, para comprender por qué las consultas se ejecutan varias veces, debe comprender la lógica de las funciones  y SWITCH .

Debe ejecutarlos por separado en un plan de consulta. Pero antes de hacerlo, asegúrese de conectarse a la base de datos y activar el Plan de consulta.

Ejecute la instrucción SWITCH  en el plan de consulta. Luego, resalte la  declaración y luego presione enter.

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

Esto generará un Plan Lógico de Consulta con diferentes operaciones.

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

Luego, ejecute la declaración IF resaltando la declaración y presionando enter.

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

Puede ver que genera el mismo Plan de consulta lógica.

Esto se debe a que cada vez que usa una función SWITCH , el motor convierte internamente esa función en una instrucción IF . Pero se recomienda una instrucción SWITCH porque aumenta la legibilidad de su código.

Después de eso, debe comprender cómo se ejecuta un código dentro de la función IF o SWITCH .

Este es un código de ejemplo que tiene una instrucción SWITCH dentro.

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

Tiene medidas para Ganancia bruta, Estimación total y Facturación total, que son la SUMA de diferentes columnas. También tiene una función sobre los del tipo de pérdida de trabajos y una instrucción SWITCH y TRUE .

Cuando ejecute este código, verá la lógica detrás de las funciones.

La primera consulta obtiene el Tipo de pérdida de trabajos distinto de la tabla Trabajos.

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

Además del tipo de pérdida de empleos, también obtiene la suma de la estimación de empleos.

Dentro de la condición DONDE , también puede ver los valores que existen en la columna Tipo de pérdida de trabajos.

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

3. Usar métodos de evaluación de código

En DAX, existen 3 métodos para evaluar códigos:

  • Evaluación estricta
  • Evaluación ansiosa
  • Evaluación IF.Eager

Estos métodos lo ayudarán a optimizar un código o medida en LuckyTemplates.

1er Método: Evaluación Estricta

El ejemplo que se muestra a continuación utiliza el método de evaluación estricta.

La lógica detrás de esto es que si el contexto del tipo de pérdida de empleos es igual a A, proporcionará la ganancia bruta. De lo contrario, da la Estimación Total. El código hace esto para cada fila en el tipo de pérdida de trabajos.

Esta es otra medida de ejemplo en LuckyTemplates que utiliza una evaluación estricta.

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

Cuando ejecute este código, generará 5 consultas del motor de almacenamiento.

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

Con Evaluación Estricta, el código proporciona la Estimación Total si la Ganancia Bruta multiplicada por 1.4 es mayor que la Estimación Promedio. En caso contrario, dará el Beneficio Bruto.

El uso de la evaluación estricta produce más consultas del motor de almacenamiento porque la declaración IF  verifica la competencia de la ganancia bruta varias veces y eventualmente obstaculizará el rendimiento de toda la operación.

2do método: evaluación ansiosa

Este es el mismo código que el ejemplo anterior.

Pero en lugar de calcular las medidas dentro de la  declaración IF , calculó todo en el antes de RETURN .

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

Significa que antes de verificar las declaraciones, obtiene todos los valores de Ganancia bruta y Estimación total para todos los Tipos de pérdida de empleos.

Cuando ejecuta este código, la cantidad de motores de almacenamiento se reduce a 3.

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

Mejora el rendimiento de toda la operación.

En la consulta de la primera operación, obtiene el tipo de pérdida de trabajos y la suma de la estimación de trabajos y la ganancia bruta.

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

La siguiente consulta obtiene la suma de la estimación de trabajos del establo de trabajos. Esto se utiliza para calcular la estimación promedio.

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

La última consulta proporciona el tipo de pérdida de trabajos distinto para los valores escritos en ADDCOLUMNS .

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

El uso de Eager Evaluation obtiene todo en un solo caché de datos. Los datos también se evalúan e iteran en el motor de fórmulas. La declaración IF  devolverá la estimación total o la ganancia bruta según la evaluación de Verdadero o Falso.

Eager Evaluation no siempre es el mejor método para optimizar sus códigos. La evaluación estricta dará como resultado un mejor rendimiento si tiene códigos complejos. Todo depende de las funciones que use dentro del código DAX.

La desventaja de Eager Evaluation es que si crea valores antes de una declaración IF  o  SWITCH  y usa esas variables dentro de la declaración que nunca debe ejecutarse, el motor seguirá calculando esas variables.

Desventajas de la evaluación ansiosa

Aquí hay un ejemplo de la desventaja:

Idealmente, si el tipo de pérdida de empleos es igual a A, debería obtener una ganancia bruta. De lo contrario, obtiene Estimación total.

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

Dado que no hay ningún valor dentro de la columna Tipo de pérdida de trabajo que sea igual a A, siempre debe obtener la Estimación total. Sin embargo, todavía proporciona la ganancia bruta en la memoria caché de datos.

Si observa la primera consulta, obtiene el tipo de pérdida de empleos y la suma de la ganancia bruta y la estimación de empleos.

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

En la siguiente consulta, obtiene un tipo de pérdida de trabajos distinto de la tabla de trabajos.

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

3er Método: Evaluación IF.EAGER

El siguiente método es la  evaluación de la función IF.EAGER  que replica el comportamiento de Eager Evaluation.

Le permite escribir un código que representa la evaluación estricta y ejecutarlo con Eager Evaluation.

Si observa este código de muestra, es igual que el código de evaluación estricta. La única diferencia es que esto usa la función IF.EAGER  en lugar de IF .

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

Antes de ejecutar el código, asegúrese de conectarse al modelo de LuckyTemplates y activar la Temporización del servidor. Una vez hecho esto, presione F5.

Puede ver que generó 3 consultas del motor de almacenamiento.

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

La primera consulta obtiene el tipo de pérdida de trabajos y la suma de la estimación de trabajos y la ganancia bruta.

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

La segunda consulta obtiene la suma de la estimación de trabajos.

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

La última consulta obtiene el Tipo de pérdida de trabajos distinto de la tabla Trabajos.

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

Notarás que ejecutó el mismo comportamiento que Eager Evaluation.

Resumen de métodos de evaluación

Al tratar de mejorar el rendimiento de sus cálculos, debe recordar lo siguiente:

  • La evaluación estricta se utiliza para códigos complejos. También se aplica cuando no desea evaluar todos los valores proporcionados por la tabla.
  • Eager Evaluation es mejor si sus códigos son simples.
  • Use IF.EAGER si desea escribir códigos usando la evaluación estricta y ejecútelo con Eager Evaluation.

Pero tenga en cuenta que debe probar estos tres métodos para descubrir cuál es realmente el mejor para usar en su informe.

4. Optimizar una medida en LuckyTemplates

La lección principal de este tutorial es optimizar sus códigos.

Vuelva atrás y mire la medida de % de incentivo de RB que se ejecuta mediante la evaluación estricta. A continuación, intente evaluarlo utilizando Eager Evaluation.

Comience creando variables e ingresando la función  RETORNO .

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

Cambie las referencias de medida con las variables.

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

Después de eso, confirme la medida y vaya a DAX Studio para ver si mejoró el rendimiento.

Muestra que el tiempo total es de 642 milisegundos y el número total de consultas del motor de almacenamiento se ha reducido a 39.

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

Ahora, cree las variables para todos los datos y cambie todas las referencias de medida a sus variables correspondientes.

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

A continuación, confirme la medida y ejecute el código en el estudio DAX.

El tiempo total de ejecución y la cantidad total de consultas del motor de almacenamiento se han reducido de 600 milisegundos a 170 milisegundos y de 43 consultas a 15 consultas, respectivamente.

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

También puede ver que no hay duplicados. Tener variables en su código mejora su legibilidad y rendimiento.

Optimización avanzada para una medida en LuckyTemplates

A continuación, debe optimizar aún más sus códigos DAX.

En lugar de usar , use la función  .

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

HASONEVALUE  cuenta el número de valores disponibles en el contexto del filtro, que es una operación muy intensiva. Mientras tanto, ISINSCOPE comprueba si la columna que se está suministrando se utiliza para agrupar o no.

Después de cambiar las funciones, confirme la medida y ejecútela en DAX Studio.

Puede ver que el número de consultas del motor de almacenamiento ahora es 12. El tiempo total de ejecución también se ha convertido en 105 milisegundos.

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

En la segunda consulta, verá un ID de datos de devolución de llamada.

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

Esto sucede a veces cuando usa SELECTEDVALUE con el campo de texto. Cuando ve datos de devolución de llamada, el motor de almacenamiento llama al motor de fórmulas para ayudar a resolver la complejidad del código. Esto ralentiza el rendimiento de su medida.

Eliminar datos de devolución de llamada

Debe eliminar los datos de devolución de llamada para tener un mejor rendimiento en su informe. Para ello, debe crear una tabla de configuración en el modelo de datos.

Vaya a la opción Introducir datos y pegue los datos. Nombre la tabla LossTypeConfigTable .

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

A continuación, haga clic en Editar para cambiar el tipo de datos de la columna que va a importar.

El tipo de datos del ID de tipo de pérdida debe ser un valor de maestro para que pueda usarse dentro de la función SELECTEDVALUE .

Una vez que se haya cargado en el modelo, cree una relación entre la tabla Jobs y la tabla LossTypeConfigTable según el tipo de pérdida.

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

Después de crear una relación, vaya a la tabla Trabajos y agregue una nueva columna. Llámelo ID de pérdida y luego ingrese la fórmula.

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

Use la función  para la tabla de configuración y luego extraiga el ID del tipo de pérdida.

A continuación, vuelva a la medida RB Incentive% y haga referencia al campo numérico en lugar del campo de texto. Dentro de SELECTEDVALUE , reemplace Loss Type con Loss ID.

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

A continuación, modifique todas las medidas dentro del código. Utilice un valor entero en lugar de valores de texto para verificar el tipo de trabajo.

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

Una vez que haya cambiado el código, confirme la medida y ejecútela en DAX Studio.

El ID de datos de devolución de llamada se elimina en la consulta y el tiempo de ejecución del código se reduce a 93 milisegundos.

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

La medida RB Incentive% ahora está completamente optimizada.

5. Optimice otras medidas en LuckyTemplates

También debe optimizar las medidas WR Incentive% y QB Incentive%.

Copie y pegue el código exacto utilizado en la medida RB Incentive%. Luego, ejecute las 3 medidas juntas.

El tiempo total de ejecución se optimiza y reduce de 1855 milisegundos a 213 milisegundos. También hay solo 12 consultas del motor de almacenamiento.

Las dos primeras consultas crean el contexto del filtro y el resto representa el número exacto de valores dentro de la columna Tipo de pérdida de trabajos.

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

Dado que todas las medidas se han optimizado, ejecute el código original y vea cómo ha cambiado el rendimiento. Los datos muestran que ahora se calcula en 1,9 segundos.

Medir en LuckyTemplates: Sugerencias y técnicas de optimización

El rendimiento de todo el código ahora está optimizado, lo que hace que su informe sea más rápido y mejor.


Optimice las funciones de DAX con este nuevo curso
Transformaciones simples de LuckyTemplates para obtener datos más optimizados
Optimice las fórmulas de LuckyTemplates con DAX avanzado

Conclusión

En los informes de LuckyTemplates, las medidas deben optimizarse para garantizar que sus códigos DAX se ejecuten sin problemas. Esto también mejora el rendimiento general de su informe.

Aprendió los diferentes métodos para optimizar su medida en LuckyTemplates y aprendió a evaluar cuál usar según el contexto de su informe.


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