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

Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.

Reply
Syndicate_Admin
Administrator
Administrator

Suma acumulada de los últimos 12 meses calendario frente a sus 12 meses calendario anteriores

Hola a todos

Tengo el requisito de escribir una medida en la que pueda comparar la suma acumulada de mis últimos 12 meses calendario frente a sus 12 meses calendario anteriores. ¡No puedo ver para obtener los números correctos de todos modos lo hago!

esto es lo que tengo en excel (este dato tiene un mes de antigüedad, por lo que julio es el último mes calendario si consideramos el mes pasado)

sshokri89_0-1631774228171.png

Como se puede ver, julio es nuestro último mes calendario y los datos se remontan a 12 meses a partir de ahí, y calcualtes los datos del AÑO ACTUAL. luego en excel, tengo AÑO ANTERIOR que me da valor de los 12 meses anteriores. por ejemplo, julio de 2021 vs julio de 2020... Octubre 2020 vs Octubre 2019.

Ahora, para calcular la SUMA ACUMULATIVA, en Excel, el valor de cada mes simplemente se ha agregado al valor de los meses anteriores. por ejemplo, agosto de 2020 Año actual = 31192 y año anterior (agosto de 2019) = 37476. y la suma acumulada de septiembre de 2020 es 31192 + 34234 = 65426 y 37476 + 37797 = 75273 para su valor del año anterior.

Actualizar:
Esta es una medida total en ejecución, no del tipo TOTALTYD.

Gracias de antemano 🙂
1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

Por alguna razón, las medidas que me diste no funcionaron. luego termino creando dos medidas como esta que realmente funcionaron bien después de algunos errores de prueba:

Rolling12_CY = CALCULATE(SUM('Sales'[unit]),DATESINPERIOD(DateTable[Date],MAX(DateTable[Date]),-12,MONTH),DateTable[Year_Classification] = "Current Year")



tenga en cuenta que mi I ya tenía una columna de "año actual" en mi tabla de fechas para referirse a los últimos 12 meses a partir del último día del mes anterior.

Rolling12_LY_v2 =
VAR EndDate =
EOMONTH(MAX(DateTable[Date]),-12)

VAR StartDate =
EDATE( EndDate, -12 ) + 1 -- shifts EndDate to year beginning

VAR Result =
CALCULATE(
SUM('Sales'[Unit]),
DATESBETWEEN( DateTable[Date], StartDate, EndDate ),
DateTable[Year_Classification] = "Last Year"
)
RETURN
Result



Ambas medidas ahora están devolviendo los valores correctos. Así que marcaré este post como solución en caso de que alguien tenga el mismo problema. pero gracias a todos los que contribuyen al post.

View solution in original post

4 REPLIES 4
Syndicate_Admin
Administrator
Administrator

Por alguna razón, las medidas que me diste no funcionaron. luego termino creando dos medidas como esta que realmente funcionaron bien después de algunos errores de prueba:

Rolling12_CY = CALCULATE(SUM('Sales'[unit]),DATESINPERIOD(DateTable[Date],MAX(DateTable[Date]),-12,MONTH),DateTable[Year_Classification] = "Current Year")



tenga en cuenta que mi I ya tenía una columna de "año actual" en mi tabla de fechas para referirse a los últimos 12 meses a partir del último día del mes anterior.

Rolling12_LY_v2 =
VAR EndDate =
EOMONTH(MAX(DateTable[Date]),-12)

VAR StartDate =
EDATE( EndDate, -12 ) + 1 -- shifts EndDate to year beginning

VAR Result =
CALCULATE(
SUM('Sales'[Unit]),
DATESBETWEEN( DateTable[Date], StartDate, EndDate ),
DateTable[Year_Classification] = "Last Year"
)
RETURN
Result



Ambas medidas ahora están devolviendo los valores correctos. Así que marcaré este post como solución en caso de que alguien tenga el mismo problema. pero gracias a todos los que contribuyen al post.

Syndicate_Admin
Administrator
Administrator

Gracias por su ayuda. Tuve esta medida antes:

CY Month running total in Date = 
Var LY = DATEADD(DateTable[Start of Month],-1,YEAR)
RETURN CALCULATE(
	SUM('Sales By Buyer Type_xlsx'[CY Month]),
DATESINPERIOD(DateTable[Date],MAX(DateTable[Date]),-12,MONTH),FILTER(ALLSELECTED(DateTable[Date]),  (DateTable[Date]) >= LY ))

y el que me diste (rodando 12) está haciendo lo mismo. Necesito ver por qué. el problema es que si selecciono un mes, por ejemplo, julio, muestra los valores correctos de suma acumulativa, pero una vez que todos mis meses se enumeran en la tabla, muestra todos los valores incorrectos:

sshokri89_0-1631777847909.png

pero si filtro mis meses usando una rebanadora, muestra los valores correctos para esos meses:

sshokri89_1-1631777888357.png

¡Todavía me pregunto por qué!

Syndicate_Admin
Administrator
Administrator

Antes de intentar reinventar la rueda, le sugiero que lea esto: Cálculos estándar relacionados con el tiempo - Patrones DAX

Syndicate_Admin
Administrator
Administrator

@sshokri89 , Pruebe a medir como ejemplos

Rolling 12 = CALCULATE(sum(Sales[Sales Amount]),DATESINPERIOD('Date'[Date ],MAX('Date'[Date ]),-12,MONTH))

Rolling 12 before 12 = CALCULATE(sum(Sales[Sales Amount]),DATESINPERIOD('Date'[Date],eomonth(MAX('Date'[Date]),-12) ,-12,MONTH))

o

Rolling 12 hasta el último 12 mes = CALCULATE(sum(Sales[Sales Amount]),DATESINPERIOD('Date'[Date],maxX('Date', dateadd('Date'[Date],-12,month)),-12,MONTH))

use -13 si es necesario en datediff o eomonth si es necesario

Helpful resources

Announcements
PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

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