Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.
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)
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.
Solved! Go to Solution.
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.
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.
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:
pero si filtro mis meses usando una rebanadora, muestra los valores correctos para esos meses:
¡Todavía me pregunto por qué!
Antes de intentar reinventar la rueda, le sugiero que lea esto: Cálculos estándar relacionados con el tiempo - Patrones DAX
@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