DAX CALCULABLE Vs Función FILTRO

DAX CALCULABLE Vs Función FILTRO

Tanto como son herramientas poderosas para manipular y analizar datos en consultas DAX, pero tienen algunas diferencias clave que es importante comprender.

En este blog, repasaremos la función CALCULATETABLE y su plan de consulta en DAX Studio , y comprenderemos en qué se diferencia de la función FILTER . Al final, comprenderá mejor cómo elegir la función adecuada para sus necesidades de análisis de datos.

Para demostrarlo, usaremos el código DAX a continuación.

DAX CALCULABLE Vs Función FILTRO

Cuando ejecute este código, obtendrá una tabla que muestra la marca y el color.

DAX CALCULABLE Vs Función FILTRO

En la pestaña Planes de consulta , obtendrá un código correspondiente al operador CrossApply en Formula Engine .

DAX CALCULABLE Vs Función FILTRO

Al mismo tiempo, puede ver que el código solo recupera el color y la marca del producto en la pestaña Tiempos del servidor .

DAX CALCULABLE Vs Función FILTRO

Tabla de contenido

Resultado de los tiempos del servidor de DAX Studio para CALCULATETABLE

Como ejemplo, filtremos el color del producto para mostrar solo rojo y/o negro.

Puede hacerlo utilizando la función FILTRO. Cuando lo ejecute, Server Timings mostrará que el argumento FILTER no se aplica al código xmSQL .

DAX CALCULABLE Vs Función FILTRO

Pero si usa la función CALCULATETABLE, la consulta en la pestaña Tiempos del servidor mostrará que los resultados han sido filtrados por color del producto.

DAX CALCULABLE Vs Función FILTRO

Plan de consulta CALCULATETABLE en DAX Studio

Veamos el Plan de consulta para cada función.

CALCULATETABLE está en la primera línea del plan de consulta lógica porque es una función de nivel superior en el código y, por lo tanto, no depende de ningún requisito.

DAX CALCULABLE Vs Función FILTRO

Cuando lee el plan de consulta de una función CALCULATETABLE, no comienza con el primer argumento. Primero debe comprender el contexto del filtro utilizado. Así que vamos a la línea 5.

Puede ver que el operador VertiPaq requiere la columna de color del producto debido al filtro aplicado. Luego escanea esta columna y usa la combinación de filtro No está vacío para verificar el color del producto en cada fila.

Una vez preparado el contexto del filtro, se ejecuta el argumento

En retrospectiva, si usa la función FILTRO, verá un plan de consulta diferente, por lo que el argumento CROSSJOIN se realiza antes de identificar el contexto del filtro.

DAX CALCULABLE Vs Función FILTRO

La desventaja de este enfoque es que no envía la condición de filtro al motor de almacenamiento. No podrá usar la cláusula WHERE dentro de xmSQL, lo que supondrá una gran carga para Formula Engine.

Y cuando trabaje con varias tablas, la combinación de filtros de la función CROSSJOIN será enorme. Esto ralentiza el rendimiento del código DAX. Por lo tanto, en la mayoría de los casos, se recomienda utilizar la función CALCULATETABLE.

Entonces, en lugar de realizar todos los cálculos en Formula Engine, puede inyectar la condición de filtro dentro de la clase WHERE del código XMSQL.

Transición de contexto para funciones DAX similares

Tiempos del servidor

Este concepto también es aplicable a la función CALCULAR. Usemos el código DAX a continuación como ejemplo.

DAX CALCULABLE Vs Función FILTRO

Una medida tiene automáticamente una función CALCULAR a su alrededor.

Cuando ejecute este código, obtendrá una tabla que muestra el monto de Ventas totales para cada color.

DAX CALCULABLE Vs Función FILTRO

En la pestaña Tiempos del servidor, puede ver que el código está ejecutando dos consultas. La primera consulta está calculando la suma del monto de Ventas de la tabla Ventas con respecto a la tabla Productos.

DAX CALCULABLE Vs Función FILTRO

Por otro lado, la segunda consulta vuelve a recuperar el color del producto de la tabla Productos. Corresponde a la función en el código DAX.

DAX CALCULABLE Vs Función FILTRO

Formula Engine coloca las cachés de datos de las dos consultas una al lado de la otra. Comienza recuperando los valores del segundo caché de datos y luego realiza una búsqueda en el primer caché de datos.

Plan de consulta

En la pestaña Plan de consulta, el Plan de consulta lógica escanea el color del producto debido al argumento .

Luego, VertiPaq suma el monto de Ventas totales según el color del producto. Realiza la transición de contexto que convierte el valor de color del producto en un contexto de filtro equivalente.

DAX CALCULABLE Vs Función FILTRO

El filtro creado por la transición de contexto se traduce en una propiedad DependOnCols en el Plan de consulta. Después de que VertiPaq escanea las columnas requeridas para calcular las Ventas totales, multiplica la Cantidad de ventas por el Precio neto.

Las Ventas totales luego se devuelven como resultado en forma de un tipo de datos de moneda. Y finalmente, ADDCOLUMNS devuelve una tabla con dos columnas que contienen el monto de Color y Ventas totales.

Conclusión

El plan de consulta puede tener un impacto significativo en el rendimiento de una consulta, ya que diferentes planes de consulta pueden tener diferentes niveles de eficiencia.

Al usar las funciones CALCULATETABLE y FILTER en una consulta DAX, el plan de consulta puede diferir según el escenario específico y una variedad de factores, como la expresión de fórmula específica que se usa y las capacidades del motor de consulta.

En general, es una buena idea probar y comparar el rendimiento de diferentes planes de consulta para determinar el enfoque más eficiente para un escenario determinado.

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