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.


Time Intelligence en LuckyTemplates: cómo calcular el número de transacciones realizadas en los últimos N días

Time Intelligence en LuckyTemplates: cómo calcular el número de transacciones realizadas en los últimos N días

Descubra cómo calcular el total de transacciones realizadas en los últimos N días y obtenga información útil utilizando la inteligencia de tiempo en LuckyTemplates.

Cómo evaluar clústeres en sus datos mediante la técnica DAX en LuckyTemplates

Cómo evaluar clústeres en sus datos mediante la técnica DAX en LuckyTemplates

En este tutorial, demuestro cómo mostrar clústeres en sus datos permite extraer información valiosa usando técnicas DAX avanzadas.

¿Cuánto personal tenemos actualmente? Lógica de fechas múltiples en LuckyTemplates usando DAX

¿Cuánto personal tenemos actualmente? Lógica de fechas múltiples en LuckyTemplates usando DAX

En este tutorial, aprenderá a calcular la <strong>población actual del personal</strong> para las relaciones múltiples de la tabla de calendario mediante la función COUNTROWS y FILTER en LuckyTemplates.

Hacer una solicitud HTTP en Power Automate

Hacer una solicitud HTTP en Power Automate

Aprenda a crear una solicitud HTTP con Power Automate y cómo implementar soluciones efectivas para la automatización de tareas.

Programe un flujo de escritorio para que se ejecute en Power Automate

Programe un flujo de escritorio para que se ejecute en Power Automate

En este tutorial, aprenda cómo programar un flujo de escritorio en Power Automate para automatizar tareas en la web y su escritorio.

Power Automate Terminar Control de acción en flujos

Power Automate Terminar Control de acción en flujos

Aprenda a usar correctamente el control Terminar acción de Power Automate que termina las acciones en un flujo si no se cumple alguna de las condiciones.

Power Query: combinar archivos de varias carpetas

Power Query: combinar archivos de varias carpetas

Aprenda a combinar archivos de varias carpetas en su red, escritorio, OneDrive o SharePoint utilizando Power Query.

Tipos de flujo de Power Automate y cuándo usarlos

Tipos de flujo de Power Automate y cuándo usarlos

En este blog, analizamos las similitudes y diferencias entre los tipos de flujo de Power Automate y determinamos cuándo usar cada flujo. Encuentra la mejor opción de automatización.

Conectores de Power Automate: número, texto y fecha y hora

Conectores de Power Automate: número, texto y fecha y hora

Familiarízate con algunos conectores Power Automate integrados que transforman cadenas en otro formato: número, texto y fecha y hora.

Tutorial del analizador VertiPaq: relaciones e integridad referencial

Tutorial del analizador VertiPaq: relaciones e integridad referencial

Este tutorial detallado sobre el analizador VertiPaq en DAX Studio le enseñará cómo usar la pestaña Relaciones para optimizar su DAX y resolver problemas de integridad referencial.