Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Get 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

Reply
Syndicate_Admin
Administrator
Administrator

¿Por qué el uso de VARiable cambia el resultado?

¿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"))

2 REPLIES 2
Syndicate_Admin
Administrator
Administrator

  • 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.

Helpful resources

Announcements
November Carousel

Fabric Community Update - November 2024

Find out what's new and trending in the Fabric Community.

Live Sessions with Fabric DB

Be one of the first to start using Fabric Databases

Starting December 3, join live sessions with database experts and the Fabric product team to learn just how easy it is to get started.

Las Vegas 2025

Join us at the Microsoft Fabric Community Conference

March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount! Early Bird pricing ends December 9th.

Nov PBI Update Carousel

Power BI Monthly Update - November 2024

Check out the November 2024 Power BI update to learn about new features.

Top Solution Authors
Top Kudoed Authors