Iteradores y transiciones de contexto en consultas DAX

Iteradores y transiciones de contexto en consultas DAX

Este tutorial analizará la transición de contexto y los iteradores anidados. Aprenderá la importancia de estas entidades y cómo pueden ser una buena fuente de optimización.

Si recuerda, la transición de contexto ocurre cuando un contexto de fila cambia a un contexto de filtro equivalente. Debe estar al tanto de lo que sucede cuando se produce una transición de contexto en sus iteradores porque a menudo puede generar resultados lentos.

Tabla de contenido

Iteradores anidados versus CALCULAR

Si se invoca una transición de contexto durante una iteración, se crea una tabla de materialización. Esto significa que la transición de contexto se invoca a través de fórmulas en su DAX. La tabla son datos sin comprimir que se envían al motor de fórmulas.

Para demostrar, la primera medida es para Grandes Ventas que obtiene el Precio Actual si es mayor o igual a 500.

Iteradores y transiciones de contexto en consultas DAX

La siguiente medida es para el promedio de las Grandes Ventas con iteradores anidados.

Iteradores y transiciones de contexto en consultas DAX

La última medida obtiene el promedio de Big Sales sin un iterador anidado y un CallBackDataID.

Iteradores y transiciones de contexto en consultas DAX

Ejecute la medida con el iterador anidado. Asegúrese de borrar la memoria caché antes de ejecutar y, a continuación, active los tiempos del servidor y el plan de consulta.

Iteradores y transiciones de contexto en consultas DAX

Puede ver que generó 3 escaneos, 2 CallBackDataID y 15,003 filas. Esto es motivo de preocupación porque solo hay 101 filas para la salida. Esto sucedió porque la medida tiene dos iteradores o funciones X.

Esta es la forma completamente expandida de la medida que se ejecutó:

Iteradores y transiciones de contexto en consultas DAX

Está iterando la tabla Fact Sales con . Luego reitera nuevamente con CallBackDataID usando . implícita que invoca la transición de contexto y materializa la tabla. Es por eso que extrajo 15,003 filas, incluso si solo hay 101 filas para la salida.

Ejecute la otra medida que no tiene iteradores anidados. Todavía está iterando la tabla Fact Sales usando AVERAGEX pero el precio actual está fuera de la función. Filtra los productos donde el precio actual es mayor o igual a 500 y luego calcula el promedio.

Iteradores y transiciones de contexto en consultas DAX

Puede ver que solo tiene 2 escaneos, 104 filas y no tiene un CallBackDataID. Entonces, si usa CALCULATE , puede deshacerse de los iteradores anidados y CallBackDataID .


Funciones DAX en LuckyTemplates: uso de iteradores
Cómo usar una función de iteración en LuckyTemplates
Cálculo DAX: filtro de transiciones de contexto

Conclusión

Hay muchas causas para un DAX de rendimiento lento. Uno de ellos se debe a los iteradores anidados que provocan transiciones de contexto innecesarias. Estos iteradores materializan más filas de las necesarias, lo que hace que sus consultas se ralenticen.

La mejor solución para esto es colocarlo dentro de CALCULATE . Esto crea menos trabajo para el motor de fórmulas y maximiza las capacidades del motor de almacenamiento.


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