Este tutorial discutirá acerca de las variables, incluidas las funciones y CALCULATE . Comprenderá cómo estos ayudan a mejorar el rendimiento de sus consultas DAX y brindan resultados precisos.
Las variables deben usarse tanto como sea posible porque pueden ubicar fácilmente los códigos para la optimización. Le impiden obtener resultados incorrectos y le ahorran tiempo buscando el error. Sin embargo, las variables a veces impiden que se vuelva a calcular un valor. Entonces, una vez que se definen con un valor, ese valor no se puede cambiar, ni siquiera mediante CALCULATE .
Es importante saber dónde debe definir y usar variables porque usarlas dentro y fuera de una iteración generará resultados diferentes. Deben definirse cerca de donde se utilizarán. Esto también ayuda a desglosar códigos largos, haciéndolos más fáciles de entender y depurar.
Tabla de contenido
Cree consultas DAX con CALCULATE y FILTER
Existen diferentes métodos para obtener resultados y respuestas en DAX. Debe desarrollar su propio estilo y fluidez al crear su informe para que pueda sentirse cómodo con lo que está trabajando. Incluso si tiene su propio estilo, debe seguir las pautas específicas, que incluyen el uso de CALCULATE sobre diferentes métodos, como FILTER .
FILTER puede enviar una gran cantidad de datos sin comprimir al motor de fórmulas y potencialmente puede desencadenar un CallBackDataID. Las medidas se utilizarán aquí para mostrar los resultados de CALCULATE y FILTER . Esto también tiene una medida definida que es local para la consulta. Las medidas definidas no se pueden encontrar en el modelo de datos, pero pueden desarrollar y solucionar problemas de sus códigos más rápido.

En la primera línea, puede ver una medida que define una variable para la fecha. Esto significa que filtra la tabla de hechos para las fechas que ocurren a partir del 31 de marzo de 2016. También puede ver una medida simple de las ventas totales que itera la tabla de ventas de hechos y multiplica la cantidad y el precio actual.
La siguiente medida es usar dentro de . Si recuerda del módulo CallBackDataID , el uso de un IF dentro de la función SUMX creará un CallBackDataID .

Esta medida está filtrando toda la tabla Fact Sales. Elimina los filtros provenientes de la tabla Fecha.

Debe tener cuidado al filtrar una tabla completa porque también filtrará todas las columnas que están en un lado de la relación de uno a muchos.
Esta medida es igual a la medida anterior; la única diferencia es que no filtra toda la tabla. Utiliza SUMX solo para iterar una tabla filtrada.

Esta es otra medida que filtra la tabla Fact Sales, pero esta vez solo en la columna en la que se encuentra.

La última medida es usar CALCULATE y el modelo de datos para filtrar y recuperar datos.

Ejecutar y comprobar cada medida
Primero, ejecute la medida IF . Asegúrese de borrar el caché antes de ejecutar la consulta y active los tiempos del servidor y el plan de consulta.


Aunque proporciona los datos correctos, el rendimiento es lento debido a CallBackDataID y las 3 duraciones.
Si ejecuta la medida que filtra toda la tabla Fact Sales, aún puede ver CallBackDataID . También generará 15 003 filas y proporcionará resultados incorrectos.


Cuando ejecuta la medida que no filtra toda la tabla Fact Sales, obtendrá los resultados correctos. Sin embargo, seguirá viendo CallBackDataID y las 15 003 filas materializadas, pero solo tendrá 7 filas de salida.


Ejecute la siguiente medida que filtra en una columna. Obtendrá los resultados correctos y eliminará CallBackDataID . Pero todavía se puede ver que se materializó un montón de filas.


Ejecute la medida CALCULAR . Puede ver que solo materializó 10 filas y generó los datos correctos en 5 milisegundos.


Es la más rápida entre todas las medidas anteriores porque no tiene CallBackDataID y extrajo solo 10 filas. Esto demuestra lo impresionante que es CALCULATE para obtener resultados rápidos y precisos.
Si ejecuta todas las consultas o medidas DAX, puede ver cuál es la más lenta y la más rápida en función de la duración. También puede ver los resultados de cada medida.


Conclusión
Al mover los filtros a CALCULATE, ahorrará tiempo y materialización porque se eliminará CallBackDataID . No tendrá que iterar los datos dos veces. Esto también maximizará el rendimiento de su DAX y lo ayudará a mejorar sus habilidades de desarrollo.