Forum Discussion
Problema de DAX.
Hola expertos,
Cuando estoy tratando de crear una medida me quedé con el siguiente problema.
Básicamente aquí estoy tratando de mostrar los valores del año anterior. Puedo usar datediff pero mi columna RPT Year está en formato de número entero
8 Replies
- Pragati11
Super User
No @AnandaKali,
Lo primero - No ha mencionado qué error está recibiendo utilizando esta medida. ¿Compartirlo para describir cuál es el problema?
Gracias
Pragati
- AnonymousNot applicable
Se muestra el error como No se puede encontrar el año RPT
- ryan_mayu
Super User
tal vez usted puede probar esto
Test = CALCULATE(SUM(Query[Jan]),Query2[RPTyear]=SLECTEDVALUE(Query2[RPTyear])-1))- AnonymousNot applicable
Cuando estoy usando la función selectedvalue que aparece debajo del error
Error:
Se ha utilizado una función 'SELECTEDVALUE' en una expresión True/False que se utiliza como expresión de filtro de tabla. Esto no está permitido.
- ryan_mayu
Super User
necesita crear una tabla de calendario y usar dateadd
https://docs.microsoft.com/en-us/dax/dateadd-function-dax
- amitchandak
Super User
@AnandaKali , En caso de que necesite este año vs el año pasado. Si tiene fecha, utilice la inteligencia de tiempo. otra clase de un año de tabla y utilizar la fórmula utilizando sólo año
Ventas YTD á CALCULATE(SUM(Sales[Sales Amount]),DATESYTD('Date'[Date],"12/31"))
Last YTD Sales á CALCULATE(SUM(Sales[Sales Amount]),DATESYTD(dateadd('Date'[Date],-1,Year),"12/31"))
Este año Ventas: CALCULATE(SUM(Sales[Sales Amount]),DATESYTD(ENDOFYEAR('Date'[Date]),"12/31"))
Ventas del año pasado: CALCULATE(SUM(Sales[Sales Amount]),DATESYTD(ENDOFYEAR(dateadd('Date'[Date],-1,Year)),"12/31"))
Last to last YTD Sales - CALCULATE(SUM(Sales[Sales Amount]),DATESYTD(dateadd('Date'[Date],-2,Year),"12/31"))
Año detrás de Ventas: CALCULATE(SUM(Sales[Sales Amount]),dateadd('Date'[Date],-1,Year))
Sólo año vs año, no un nivel por debajo. Esto puede funcionar sin la tabla de fechas, pero necesita una tabla de añosEste año: CALCULATE(sum('order'[Qty]),filter(ALL('Date'),'Date'[Year]-max('Date'[Year])))
Last Year ? CALCULATE(sum('order'[Qty]),filter(ALL('Date'),'Date'[Year]-max('Date'[Year])-1))
rolling? CALCULATE(sum('order'[Qty]),filter(ALL('Date'),'Date'[Year]>'max('Date'[Year])-2 && 'Date'[Year]<-max('Date'[Year])) )diff -Este año]-[Año pasado]
diff % á divide([This Year]-[Last Year ],[Last Year ])Power BI — Año tras año con o sin inteligencia de tiempo
https://medium.com/@amitchandak.1978/power-bi-ytd-questions-time-intelligence-1-5-e3174b39f38a - AllisonKennedy
Community Champion
@AnandaKali tiene una tabla DimDate? ¿Es eso lo que es Query2?
Puede hacerlo más fácilmente si tiene una tabla DimDate utilizando inteligencia de tiempo integrada, de lo contrario necesita calcular el año máximo seleccionado en el contexto de todo el informe, puede hacerlo usando una variable, pero ¿necesita trabajar para selecciones de varios años? Si es así, la tabla DimDate es mucho más fácil. https://excelwithallison.blogspot.com/2020/04/dimdate-what-why-and-how.html
De lo contrario, el uso de una variable se vería algo parecido a (he intentado tener en cuenta las selecciones de varios años, e imitado el comportamiento de la función DATEADD utilizando la inteligencia de tiempo y la tabla de fechas:
Prueba de la prueba ( Test)
VAR maxYear á MAX(Query2[RPTyear])
VAR minYear á MIN(Query2[RPTyear])
devolución
CALCULATE(SUM(Query[Jan]),FILTER(ALL(Query2[RPTyear]), Query2[RPTyear]<-maxYear-1 && Query2[RPTyear]>- minYear-1 ))
- AnonymousNot applicable
No @AnandaKali,
Según su descripción, creé los datos:
Estos son los pasos que puede seguir:
1. Utilice la tabla calculada para crear una tabla de calendario denominada query2 y cree una columna calculada para mostrar la tabla yearcalculated:
Quert2 = CALENDARAUTO()columna calculada:
PRTyear = YEAR('Quert2'[Date])2. Crear medida.
Test = var _select =SELECTEDVALUE('Quert2'[PRTyear]) return CALCULATE(SUM('Query'[Jan]),FILTER('Query',YEAR('Query'[Date])=_select-1))3. Resultado
Puede descargar el archivo PBIX desde aquí.
Saludos
Liu Yang
Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.