Este tutorial tratará sobre los filtros de LuckyTemplates. Aprenderá a ver la transición de contexto en xmSQL y el plan de consulta lógica. La transición de contexto transforma el contexto de fila actual en un contexto de filtro equivalente. A continuación, los filtros se activan mediante la función .
Tabla de contenido
La importancia de la función CALCULAR
La función CALCULATE crea el contexto de sus cálculos DAX. Si está utilizando una función de iteración sin envolverla en CALCULATE , obtendrá resultados inexactos.
Aquí hay una consulta simple con una transición sin contexto:

Tiene la función para el producto del Precio y Cantidad Actual de FactSales . Luego agrega una columna a cada año en la tabla Año calendario para Ventas totales.
Si ejecuta la consulta, verá que los resultados de cada fila son los mismos.

La repetición de resultados significa que algo no está bien porque es prácticamente imposible tener la misma cantidad de ventas todos los años. Es posible que su medida o modelo de datos DAX necesite revisiones o ajustes. En este caso, la medida DAX no incluye CALCULATE .
Si hace clic en el primer escaneo y mira la instrucción xmSQL, no puede ver ningún filtro o contexto que indique que el año calendario debe ser parte del cálculo. Necesita la función CALCULATE para invocar la transición de contexto.

Invocación de filtros en LuckyTemplates DAX Query
Esta es la misma consulta pero con una transición de contexto usando la función CALCULAR .

Si ejecuta la consulta, puede ver diferentes valores en los resultados.

El segundo escaneo del DimCalendar Year es para recopilar todos los demás años. Los resultados no tendrán filas durante años con resultados en blanco (2012, 2013 y 2014) sin el escaneo. El motor de almacenamiento lo hace en segundo plano para garantizar que se tengan en cuenta todos los datos.

Si observa la instrucción xmSQL, puede ver que la función CALCULATE invoca la combinación externa izquierda . Left Outer Join proporciona los datos de ventas de los años 2015 a 2018. Si ve Left Outer Join combinado con $Expr0 en la instrucción xmSQL, significa que hay una transición de contexto.

Las cosas pueden complicarse un poco cuando ocurren varias transiciones de contexto. Pero Left Outer Join le informa a DAX que debe concentrarse en el rango de datos de su filtro.
De hecho, puede ver esto en el plan de consulta lógica en forma de Sum_Vertipaq , que depende del DimCalendar Year.

Si intenta ejecutar la consulta sin transición de contexto y observa el plan de consulta lógica, puede ver que Sum_Vertipaq no depende de nada. Esto indica que necesita completar algo en su modelo de datos o medida para obtener el resultado que desea.

Introducción al contexto de filtro en LuckyTemplates
DAX Tutorial: Contexto y el motor de cálculo
Cómo usar filtros simples en LuckyTemplates
Conclusión
Así es como identifica una transición de contexto y determina cuándo está ocurriendo o no. Invocar transiciones de contexto es esencial para generar resultados valiosos. Ayudan a recopilar datos de diferentes rangos, períodos de tiempo y tablas.
CALCULATE es una de las funciones más importantes cuando invoca sus filtros. Una vez que se establece el cálculo, el motor de almacenamiento trabaja en la ejecución de la consulta para proporcionar resultados.