Hola, chicos
Necesito ayuda. Quiero calcular una suma acumulada pero entre un período fijo de 12 meses. Al igual que en el siguiente ejemplo, hice.
La idea es, por ejemplo, que quiero comenzar en mayo de 2018 por lo que el total acumulado comienza en mayo de 2018 y termina 12 meses más tarde en abril de 2019. Después de eso, en mayo de 2019 el acumulado comienza de nuevo y luego termina 12 meses más tarde. Por supuesto, la idea es que pase sea cual sea el mes que tenga que empezar.
Lo intenté con la siguiente fórmula sin éxito.
12month_test =
CALCULATE(
[monthly_value],
DATESINPERIOD(
Dates[Dates],
LASTDATE(Dates[Dates), -12, MONTH
)
)
Espero que pueda ayudarme a resolver esto.
Gracias
Solved! Go to Solution.
Hola
Según su descripción, creo una muestra para probar:
Por favor, siga estos pasos:
1)Crear una tabla de segmentación:
Slicer Table = DISTINCT(SELECTCOLUMNS('Table',"Month",'Table'[Date].[Month],"MonthNo",'Table'[Date].[MonthNo]))
2)Pruebe esta medida:
Measure =
IF (
MAX ( 'Table'[Month] ) = SELECTEDVALUE ( 'Slicer Table'[Month] ),
MAX ( 'Table'[Monthly Value] ),
CALCULATE (
SUM ( 'Table'[Monthly Value] ),
FILTER (
ALLSELECTED ( 'Table' ),
'Table'[Date] <= MAX ( 'Table'[Date] )
&& 'Table'[Date]
>= IF (
MIN ( 'Table'[MonthNo] ) < MIN ( 'Slicer Table'[MonthNo] ),
DATE ( YEAR ( MIN ( 'Table'[Date] ) ) - 1, MIN ( 'Slicer Table'[MonthNo] ), 1 ),
DATE ( YEAR ( MIN ( 'Table'[Date] ) ), MIN ( 'Slicer Table'[MonthNo] ), 1 )
)
)
)
)
3)Crear una medida de cheque:
check =
IF (
MAX ( 'Table'[Date] )
< DATE ( MINX ( ALLSELECTED ( 'Table' ), 'Table'[Date].[Year] ), CALCULATE (
MAX ( 'Slicer Table'[MonthNo] ),
FILTER (
'Slicer Table',
'Slicer Table'[Month] = SELECTEDVALUE ( 'Slicer Table'[Month] )
)
), 1 ),
0,
1
)
4)Elija arriba [Medida] y [Año],[Mes],[Valor mensual] como un objeto visual de tabla.
Aplique lo anterior [comprobar] a este objeto visual estableciendo [check]-1.
Elija [Mes] en la tabla de segmentación de datos como segmentación de datos.
Cuando se selecciona un mes en la segmentación de datos, el resultado muestra:
Aquí está mi archivo pbix de prueba:
Espero que esto ayude.
Saludos
Giotto Zhi
Hola
Según su descripción, creo una muestra para probar:
Por favor, siga estos pasos:
1)Crear una tabla de segmentación:
Slicer Table = DISTINCT(SELECTCOLUMNS('Table',"Month",'Table'[Date].[Month],"MonthNo",'Table'[Date].[MonthNo]))
2)Pruebe esta medida:
Measure =
IF (
MAX ( 'Table'[Month] ) = SELECTEDVALUE ( 'Slicer Table'[Month] ),
MAX ( 'Table'[Monthly Value] ),
CALCULATE (
SUM ( 'Table'[Monthly Value] ),
FILTER (
ALLSELECTED ( 'Table' ),
'Table'[Date] <= MAX ( 'Table'[Date] )
&& 'Table'[Date]
>= IF (
MIN ( 'Table'[MonthNo] ) < MIN ( 'Slicer Table'[MonthNo] ),
DATE ( YEAR ( MIN ( 'Table'[Date] ) ) - 1, MIN ( 'Slicer Table'[MonthNo] ), 1 ),
DATE ( YEAR ( MIN ( 'Table'[Date] ) ), MIN ( 'Slicer Table'[MonthNo] ), 1 )
)
)
)
)
3)Crear una medida de cheque:
check =
IF (
MAX ( 'Table'[Date] )
< DATE ( MINX ( ALLSELECTED ( 'Table' ), 'Table'[Date].[Year] ), CALCULATE (
MAX ( 'Slicer Table'[MonthNo] ),
FILTER (
'Slicer Table',
'Slicer Table'[Month] = SELECTEDVALUE ( 'Slicer Table'[Month] )
)
), 1 ),
0,
1
)
4)Elija arriba [Medida] y [Año],[Mes],[Valor mensual] como un objeto visual de tabla.
Aplique lo anterior [comprobar] a este objeto visual estableciendo [check]-1.
Elija [Mes] en la tabla de segmentación de datos como segmentación de datos.
Cuando se selecciona un mes en la segmentación de datos, el resultado muestra:
Aquí está mi archivo pbix de prueba:
Espero que esto ayude.
Saludos
Giotto Zhi
Gracias @v-gizhi-msft
Su solución fue muy útil.
Als gracias @amitchandak encontré algunas de sus fórmulas muy útiles para otros problemas que tuve.
Puede sutilizar datesytd y totalytd con fecha de finalización con fecha Calendario
YTD Sales = CALCULATE(SUM(Sales[Sales Amount]),DATESYTD(('Date'[Date]),"4/30"))
This Sales = CALCULATE(SUM(Sales[Sales Amount]),DATESYTD((ENDOFYEAR('Date'[Date])),"4/30"))
Last YTD Sales = CALCULATE(SUM(Sales[Sales Amount]),DATESYTD(dateadd('Date'[Date],-1,Year),"4/301"))
Last YTD complete Sales = CALCULATE(SUM(Sales[Sales Amount]),DATESYTD(ENDOFYEAR(dateadd('Date'[Date],-1,Year)),"4/30"))
Last to last YTD Sales = CALCULATE(SUM(Sales[Sales Amount]),DATESYTD(dateadd('Date'[Date],-2,Year),"4/30"))
Year behind Sales = CALCULATE(SUM(Sales[Sales Amount]),dateadd('Date'[Date],-1,Year))
Para obtener lo mejor de la función de inteligencia de tiempo. Asegúrese de que tiene un calendario de fechas y se ha marcado como la fecha en la vista de modelo. Además, únase a él con la columna de fecha de su hecho/s. Consulte:
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/
Join us for a free, hands-on Microsoft workshop led by women trainers for women where you will learn how to build a Dashboard in a Day!