Starting December 3, join live sessions with database experts and the Microsoft product team to learn just how easy it is to get started
Learn moreGet certified in Microsoft Fabric—for free! For a limited time, get a free DP-600 exam voucher to use by the end of 2024. Register now
¿Alguien puede explicarme la diferencia esperada en estas dos medidas del DAX? Uno contiene una variable (VAR) "SpendSum" y el otro no. No hace falta decir que obtuve resultados diferentes con mis imágenes asociadas. Ambos son uno de los doce valores mensuales que se mostrarán para el año seleccionado, pero el que usa la variable inesperadamente dio como resultado una tabla con todos los resultados mensuales siendo el mismo total anual (para cada fila respectiva). El que no tenía la variable mostraba cada valor mensual individual respectivo según se deseaba. Pensé que el VAR solo tomó el lugar de la función para facilitar la codificación, pero hubo un resultado diferente. ¿Por qué funcionó así? Solo estoy tratando de entender cómo funcionan los VAR y sus limitaciones. Gracias de antemano por sus explicaciones.
MEDIDA 1 =
VAR SelectYear = SELECTEDVALUE('Tabla de calendario 2'[Año])
DEVOLUCIÓN
Calcular(SUMX('Gasto', 'Gasto'[Cantidad USD]), (DATESBETWEEN('Tabla de calendario 2'[FECHA].[ Fecha], FECHA(SelectYear,1,1), DATE(SelectYear,1,31))), ('Spend'[CATEGORY]<>"Spend Delta"))
------------------------------------------------------------------
MEDIDA 2 =
VAR SelectYear = SELECTEDVALUE('Tabla de calendario 2'[Año])
VAR SpendSum = SUMX('Gasto' ,'Gasto'[Cantidad USD])
DEVOLUCIÓN
Calculate(SpendSum,(DATESBETWEEN('Calendar Table 2'[DATE].[ Fecha], FECHA(SelectYear,1,1), DATE(SelectYear,1,31))), ('Spend'[CATEGORY]<>"Spend Delta"))
En la medida 1, SUMX está dentro de CALCULATE, por lo que se evalúa en el contexto de filtro creado por CALCULATE. El contexto es el mes específico establecido por DATESBETWEEN.
En la medida 2, SUMX se calcula fuera de CALCULATE (en la variable SpendSum), por lo que suma toda la tabla sin el contexto de filtro específico del mes. A continuación, CALCULATE no afecta al valor de SpendSum, puesto que ya está calculado. Es como tener un valor constante.
Gracias, por la explicación. En este caso, la fórmula era lo suficientemente pequeña como para que el VAR no fuera necesario. Por lo tanto, si tengo que aplicar un filtro, es posible que tenga que incluirlo en el VAR en lugar de en el cuerpo principal de la medida. No puedo simplemente considerar que mi VAR es un sustituto exacto para todos los contextos.
Starting December 3, join live sessions with database experts and the Fabric product team to learn just how easy it is to get started.
March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount! Early Bird pricing ends December 9th.