Check your eligibility for this 50% exam voucher offer and join us for free live learning sessions to get prepared for Exam DP-700.
Get StartedDon't miss out! 2025 Microsoft Fabric Community Conference, March 31 - April 2, Las Vegas, Nevada. Use code MSCUST for a $150 discount. Prices go up February 11th. Register now.
Hola,
Quiero comparar las ventas del año anterior con el actual. El problema es que el año no está cerrado, por lo que si miro en enero, me puede dar una variación muy grande.
Es decir, un cliente igual compra 400.000€ en un año, pero en marzo únicamente lleva gastado 45.000€. Si lo comparo con el año anterior, dará una variación de -88,75%, que no es real, puesto que únicamente debería comparar hasta marzo del año anterior.
¿Cómo lo puedo hacer? Con SAMEPERIODLASTYEAR no logro resultados.
Muchas gracias,
Un saludo.
Solved! Go to Solution.
cCalendar =
ADDCOLUMNS (
CALENDAR (DATE(2018,1,1), TODAY()),
"IdDate", FORMAT ( [Date], "YYYYMMDD" ),
"YearMonth", FORMAT ( [Date], "YYYYMM" ),
"Year", YEAR ( [Date] ),
"Month", FORMAT ( [Date], "MM" ),
"MonthName", FORMAT ( [Date], "mmmm" ),
"ShortMonthName", FORMAT ([Date], "mmm" ),
"WeekNumDay", WEEKDAY ( [Date] ),
"WeekDay", FORMAT ( [Date], "dddd" ),
"Trim", "Q" & FORMAT ( [Date], "Q" ),
"IsPastPY" = IF([Date]<= EDATE(TODAY(),-12),1,0)
)
SAMEPERIODLASTYEAR es un componente necesario para su solución, pero no es suficiente. Necesita un filtro adicional "IsPastPY" que sea una columna (calculada) en su tabla de calendario, que indique si una fecha es anterior a "hoy menos un año".
Esto requiere que la tabla del calendario esté en modo de importación, con una actualización diaria.
Hola,
Muchas gracias por la respuesta. La tabla de calendario es una tabla creada en DAX y el informe se actualiza cada día, por lo que no habría problema. La tengo creada así:
cCalendar =
ADDCOLUMNS (
CALENDAR (DATE(2018,1,1), NOW()),
"IdDate", FORMAT ( [Date], "YYYYMMDD" ),
"YearMonth", FORMAT ( [Date], "YYYYMM" ),
"Year", YEAR ( [Date] ),
"Month", FORMAT ( [Date], "MM" ),
"MonthName", FORMAT ( [Date], "mmmm" ),
"ShortMonthName", FORMAT ([Date], "mmm" ),
"WeekNumDay", WEEKDAY ( [Date] ),
"WeekDay", FORMAT ( [Date], "dddd" ),
"Trim", "Q" & FORMAT ( [Date], "Q" )
)
¿Cómo tengo que añadir el "IsPastPY"?
Saludos.
cCalendar =
ADDCOLUMNS (
CALENDAR (DATE(2018,1,1), TODAY()),
"IdDate", FORMAT ( [Date], "YYYYMMDD" ),
"YearMonth", FORMAT ( [Date], "YYYYMM" ),
"Year", YEAR ( [Date] ),
"Month", FORMAT ( [Date], "MM" ),
"MonthName", FORMAT ( [Date], "mmmm" ),
"ShortMonthName", FORMAT ([Date], "mmm" ),
"WeekNumDay", WEEKDAY ( [Date] ),
"WeekDay", FORMAT ( [Date], "dddd" ),
"Trim", "Q" & FORMAT ( [Date], "Q" ),
"IsPastPY" = IF([Date]<= EDATE(TODAY(),-12),1,0)
)
Hola,
Excelente, ya va cogiendo forma. Ahora veo que en la tabla calendario, tengo la columna y los días del año pasado que todavía no hemos llegado en este, aparecen en 0 y los que sí, como 1.
Ahora tengo las dos medidas para comparar:
- Ventas de este año
SalesThisYear = CALCULATE(SUM(VwPowerBI_DeliveryNoteSL[TotalNeto]), YEAR(VwPowerBI_DeliveryNoteSL[Date]) = YEAR(TODAY()))
- Ventas del año anterior
SalesLastSamePeriod = CALCULATE([M_TotalNeto], SAMEPERIODLASTYEAR(VwPowerBI_DeliveryNoteSL[Date]), FILTER(cCalendar,cCalendar[IsPastPY]=1))
Pero algo estoy haciendo mal ya que cuando lo añado en la tabla, me salta el error "No se pueden cargar los datos para este objeto visual" y si hago click en "Más detalles" me dice "MdxScript(model) (62, 64) ERror de cálculo en la medida 'Sales'[SalesLastSamePeriod]: La función "SAMEPERIODLASTYEAR" espera una selección contigua cuando la columna de fecha no es única, tiene intervalos o contiene parte de la hora."
Muchísimas gracias,
Un saludo.
Rehaga la tabla del calendario para que las fechas sean contiguas y abarquen. Marque como tabla de fechas para verificar.
Hola,
Lo he podido solucionar de la siguiente manera (aplicando dos filtros en un CALCULATE)
SalesLastYearSamePeriod = CALCULATE(SUM(VwPowerBI_DeliveryNoteSL[TotalNeto]), YEAR(VwPowerBI_DeliveryNoteSL[Date]) = YEAR(TODAY()) - 1, cCalendar[IsPastPY]=1)
De esta manera, cojo el TotalNeto filtrado por todo el año anterior pero, además, añadiendo que IsPastPY=1, por lo que no me añadirá los días del año anterior que no han pasado en el año en curso.
Muchas gracias,
Un saludo.