Yoshimitsu411
Hola
Necesito calcular el valor YTD excluyendo el mes actual. Tengo la siguiente información en una tabla de datos con una columna de mes. Agregué la columna Month_Number usando Switch. Ahora necesito dividir la suma de la columna EAC por la suma de la columna de ingresos EAC para el último mes dado que estamos en febrero. Si estuviéramos en junio, la suma sería todos los últimos meses excepto junio. ¿Cómo hago esto?
Gracias por cualquier sugerencia.
Yoshi
Ashish_Mathur
En respuesta a Yoshimitsu411
Hola,
Puede descargar mi archivo PBI desde aquí.
Espero que esto ayude.
Yoshimitsu411
En respuesta a Ashish_Mathur
gracias @Ashish_Mathur @danextian @amitchandak @stretcharm por toda su ayuda.
Pude resolver esto usando la solución @Ashish_Mathur.
También encontré una solución similar aquí que también funcionó: https://community.powerbi.com/t5/Desktop/TotalYTD-to-Last-Month/mp/692437
Correct Formula =
VAR pre =
CALCULATE (
MAX ( 'CalendarAuto'[Date] ),
FILTER ( 'CalendarAuto', DATEDIFF ( 'CalendarAuto'[Date], TODAY (), MONTH ) = 1 )
)
RETURN
CALCULATE(
SUM(Sheet1[EAC]),
FILTER(
Sheet1,
YEAR(Sheet1[Custom Date]) = YEAR(pre)
&& Sheet1[Custom Date] <= pre
)
)
La idea de usar una tabla de Calendario separada es buena y estoy seguro de que usaré en el futuro. Gracias @danextian por el dato.
Gracias de nuevo.
Yoshi
Amitchandak
En caso de que tenga la fecha, puede usar la inteligencia de tiempo usando la tabla de fechas
Si tienes un mes, lo conviertes en la fecha.
fecha = fecha (tabla[year],fecha[month], 1)
Entonces prueba como
YTD Sales month back = CALCULATE([Sum Sales],DATESYTD(ENDOFMONTH(DATEADD('Date'[Date Filer],-1,MONTH))))
Para aprovechar al máximo la función de inteligencia del tiempo. Asegúrese de tener un calendario de fechas y que se haya marcado como la fecha en la vista de modelo. Además, únala con la columna de fecha de sus hechos.
Referir
https://radacad.com/creating-calendar-table-in-power-bi-using-dax-functions
https://www.archerpoint.com/blog/Posts/creating-date-table-power-bi
https://www.sqlbi.com/articles/creating-a-simple-date-table-in-dax/
Aprecie sus felicitaciones. En caso de que esta sea la solución que está buscando, márquela como la Solución.
En caso de que no sirva de ayuda, proporcione información adicional y márqueme con @
Gracias. Mis blogs recientes –Decodificación de consultas directas: inteligencia de tiempo, colores del ganador en MAP, análisis de recursos humanos, Power BI, trabajo con tiempo no estándar y comparación de datos en rangos de fechas
Conectarse en Linkedin
Amitchandak
En respuesta a Amitchandak
Puede obtener el número del mes, pero eso requerirá que se usen todos. Así que mueva mes y año a otra tabla y únase a esto.
Hasta el mes pasado =
var _max = maxx (mes, mes[Month No]) -1
Var _maxYear = maxx (Mes, Mes[year])
Ventas YTD = CALCULAR (SUMA (Ventas[Sales Amount]), fiter (todo (mes), mes[Month]= _max && mes[Year]= _maxYear))
Yoshimitsu411
En respuesta a Amitchandak
Hola a todos
Gracias por las sugerencias.
He agregado dos columnas a mi tabla de datos según las sugerencias anteriores.
Custom Month Number = SWITCH('Zinfra ADPR Forecast'[Month], "JAN", 1, "FEB", 2, "MAR", 3, "APR", 4, "MAY", 5, "JUN", 6, "JUL", 7, "AUG", 8, "SEP", 9, "OCT", 10, "NOV", 11, "DEC", 12)
Custom Date Created to Calculate YTD = DATE(2020, 'Table'[Custom Month Number], 1)
Luego obtengo esto en mi tabla de datos.
Ahora puedo calcular el TotalYTD usando la fórmula siguiente, pero no me da el resultado correcto.
YTD = TOTALYTD(SUM('Table'[EAC]), 'Table'[Custom Date Created to Calculate YTD].[Date])
Quiero el valor de todos los meses anteriores excluyendo el mes actual.
Gracias de nuevo.
danextian
En respuesta a Yoshimitsu411
Hola @ Yoshimitsu411,
Prueba esto:
YTD Last Month =
CALCULATE (
[Measure],
//YTD before the earliest date in the currently selected month
FILTER (
DATESYTD ( Table[Date] ),
Table[Date] < MIN ( Table[Date] )
)
)
Yoshimitsu411
En respuesta a danextian
Gracias.
Probé tu fórmula y me sale (en blanco)
Measure = CALCULATE(SUM(Sheet1[EAC]), FILTER(DATESYTD(Sheet1[Custom Date]), Sheet1[Custom Date] < MIN(Sheet1[Custom Date])))
danextian
En respuesta a Yoshimitsu411
Hola @ Yoshimitsu411,
Modifique su fórmula a esto:
Measure =
CALCULATE (
SUM ( Sheet1[EAC] ),
FILTER (
DATESYTD ( Sheet1[Custom Date] ),
Sheet1[Custom Date] < MIN ( Sheet1[Custom Date] ),
ALL(Sheet1[Custom Date], Sheet1[Filter Column2], Sheet1[Filter Column3])
)
)
Reemplace las columnas de filtro con las columnas de fecha / mes que va a usar en la segmentación.
Nota: Es recomendable utilizar una tabla de fechas externa. Simplificará su fórmula.
Yoshimitsu411
En respuesta a danextian
Gracias @danextian
Probé tu fórmula y obtuve el error: Se pasaron demasiados argumentos a la función FILTRO. El recuento máximo de argumentos para la función es 2.
Amitchandak
En respuesta a Yoshimitsu411
Use la dimensión de fecha, como sugerí en mi última publicación y mueva el mes hacia atrás
YTD = TOTALYTD(SUM('Table'[EAC]), dateadd(Date[Date],-1,Month))
Yoshimitsu411
En respuesta a Amitchandak
Gracias por su respuesta.
La fórmula tiene sentido, lamentablemente, me está dando un valor incorrecto.
Aquí hay algunos datos de muestra.
Activo | ID de proyecto de socio | Nombre del proyecto | ENE EAC | FEB EAC | MAR EAC | APR EAC | MAYO EAC | JUN EAC | JUL EAC | AGOSTO EAC | SEP EAC | OCT EAC | NOV EAC | DEC EAC |
Contoso | CON-TOSO-001 | Lorem ipsum dolor sit amet | 1 | 2 | 3 | |||||||||
Contoso | CON-TOSO-002 | consectetur adipiscing elit. Donec rhoncus | 2 | 3 | 4 | |||||||||
Contoso | CON-TOSO-003 | arius diam consequat a. Mecenas eget | 3 | 4 | 5 | |||||||||
Contoso | CON-TOSO-004 | attis ex vestibulum in. Nulla ipsum velit | 4 | 5 | 6 | |||||||||
Contoso | CON-TOSO-005 | t tellus eget facilisis. Fusce posuere maximus leo | 5 | 6 | 7 | |||||||||
Contoso | CON-TOSO-006 | sapien sodales purus, en ornare odio | 6 | 7 | 8 | |||||||||
Contoso | CON-TOSO-007 | soy laoreet pellentesque condimentum. Cras ac pellentesque odio | 7 | 8 | 9 | |||||||||
Contoso | CON-TOSO-008 | auris sapien sodales purus, en ornare | 8 | 9 | 10 | |||||||||
Contoso | CON-TOSO-009 | olutpat ac dignissim eget, dictum vitae magna. Duis et metus | 9 | 10 | 11 | |||||||||
Contoso | CON-TOSO-010 | placerat tellus eget facilisis | 10 | 11 | 12 | |||||||||
Cuando utilizo su fórmula a continuación, obtengo 120, que es la suma de JAN EAC y FEB EAC. Lo que quiero es 55, que es la suma de solo ENE EAC porque estamos en el mes de febrero. Si estuviéramos en marzo, querría ver 120 y así sucesivamente.
Measure Past Months YTD = TOTALYTD(SUM(Sheet1[EAC]),DATEADD(Sheet1[Custom Date], -1, MONTH))
Aquí está mi tabla de datos.
Gracias.
Ashish_Mathur
En respuesta a Yoshimitsu411
Hola,
Puede descargar mi archivo PBI desde aquí.
Espero que esto ayude.
Yoshimitsu411
En respuesta a Ashish_Mathur
gracias @Ashish_Mathur @danextian @amitchandak @stretcharm por toda su ayuda.
Pude resolver esto usando la solución @Ashish_Mathur.
También encontré una solución similar aquí que también funcionó: https://community.powerbi.com/t5/Desktop/TotalYTD-to-Last-Month/mp/692437
Correct Formula =
VAR pre =
CALCULATE (
MAX ( 'CalendarAuto'[Date] ),
FILTER ( 'CalendarAuto', DATEDIFF ( 'CalendarAuto'[Date], TODAY (), MONTH ) = 1 )
)
RETURN
CALCULATE(
SUM(Sheet1[EAC]),
FILTER(
Sheet1,
YEAR(Sheet1[Custom Date]) = YEAR(pre)
&& Sheet1[Custom Date] <= pre
)
)
La idea de usar una tabla de Calendario separada es buena y estoy seguro de que usaré en el futuro. Gracias @danextian por el dato.
Gracias de nuevo.
Yoshi
Ashish_Mathur
En respuesta a Yoshimitsu411
De nada.
estirar
Usaría PowerQuery / M para crear un campo de fecha a partir del mes.
Lo hago usando la columna Agregar del ejemplo en este video
Una vez que tenga una fecha, puede hacer cálculos YTD fácilmente.
Curbal tiene un video que explica YTD aquí.