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

Learn from the best! Meet the four finalists headed to the FINALS of the Power BI Dataviz World Championships! Register now

Reply
Syndicate_Admin
Administrator
Administrator

Las medidas del mes/año anterior no funcionan

Tengo una tarjeta en la que estoy ingresando los datos actuales del mes/año y luego haciendo una comparación con el mismo período de tiempo del mes/año anterior. El problema que tengo es que el cálculo del mes/año anterior me da un total para todo el mes anterior y no el total del mes hasta la fecha que esperaba. Todos los totales del mes anterior a continuación son para el mes y no hasta el día 22 del mes anterior. ¿Cómo hago para que estas medidas extraigan correctamente el total del mes anterior? Gracias.

cheid_0-1761141078900.png

Mes hasta la fecha

Total de horas - MTD =
CALCULAR(
[Horas totales],
FECHASMTD('Calendario de búsqueda'[Fecha])
)
Mes anterior hasta la fecha
Total de horas - PMTD =
CALCULAR(
[Total de horas - MTD],
FECHAAÑADIR('Calendario de búsqueda'[Fecha],-1,MES)
)
7 REPLIES 7
Syndicate_Admin
Administrator
Administrator

Hola @cheid

El problema que se produce es común al comparar los valores de mes hasta la fecha (MTD) con el valor de MTD de un mes anterior en Power BI. La razón por la que la medida "Mes anterior hasta la fecha" devuelve totales para todo el mes anterior en lugar de hasta el mismo día del mes anterior (por ejemplo, hasta el día 22) es porque la función DATEADD cambia todo el contexto de fecha un mes, pero no se alinea dinámicamente con el intervalo de fechas del mes actual. Para solucionar esto, debe limitar explícitamente el cálculo del mes anterior al mismo número de días que el período MTD actual. Una forma efectiva es capturar la última fecha del período MTD actual y luego filtrar las fechas del mes anterior hasta ese mismo número de día. Puedes modificar tu medida de la siguiente manera:

Total Hours - PMTD =
VAR CurrentMTDLastDate = MAX('Lookup Calendar'[Date])
VAR PriorMonthSameDate =
    EOMONTH(CurrentMTDLastDate, -1) + DAY(CurrentMTDLastDate)
RETURN
CALCULATE(
    [Total Hours],
    DATESBETWEEN(
        'Lookup Calendar'[Date],
        STARTOFMONTH(EOMONTH(CurrentMTDLastDate, -1)),
        PriorMonthSameDate
    )
)

Este enfoque identifica dinámicamente el mismo día límite del mes anterior y restringe el total del mes anterior solo a ese período. Como resultado, si hoy es el día 22 del mes actual, la medida "Mes anterior hasta la fecha" calculará correctamente los valores hasta el día 22 del mes anterior, lo que garantiza una comparación precisa del mes hasta la fecha entre los dos períodos.

Syndicate_Admin
Administrator
Administrator

@cheid , Probar como

Mes hasta la fecha

Total de horas - MTD =
CALCULAR(
[Horas totales],
FECHASMTD(dateadd('Calendario de búsqueda'[Fecha], -1, Mes)
)

Gracias por la respuesta. También lo intenté y me da el total de todo el mes anterior.

@cheid , Razón de eso
Complete el mes seleccionado en la segmentación de datos. O el mes está ahí en la fila visual


LMTD CANTIDAD forzada =
var _max = hoy()
devolución
if(max('Fecha'[Fecha])<=_max, calculate(Sum('order'[Cantidad]),DATESMTD(dateadd('Fecha'[Fecha],-1,mes) )), blank())


Podemos forzarlo

LMTD CANTIDAD forzada =
var _max = fecha(año(hoy()),mes(hoy())-1,día(hoy()))
devolución
if(max('Fecha'[Fecha])<=_max, CALCULATE(Suma('orden'[Cantidad]),DATESMTD(dateadd('Fecha'[Fecha],-1,año)),'Fecha'[Fecha]<=_max), blank())
O
CALCULATE(Sum('order'[Cantidad]),DATESMTD(dateadd('Date'[Date],-1,year)),'Date'[Date]<=_max)
TOTALMTD(Suma('orden'[Cantidad]),dateadd('Fecha'[Fecha],-1,año),'Fecha'[Fecha]<=_max)


o

LMTD CANTIDAD forzada =
var _Maxdate = MAX('Tabla de fechas'[fecha])
var _max = fecha(año(_Maxdate),mes(_Maxdate)-1,día(_Maxdate))
devolución
if(max('Fecha'[Fecha])<=_max, CALCULATE(Suma('orden'[Cantidad]),DATESMTD(dateadd('Fecha'[Fecha],-1,año)),'Fecha'[Fecha]<=_max), blank())
O
CALCULATE(Sum('order'[Cantidad]),DATESMTD(dateadd('Date'[Date],-1,year)),'Date'[Date]<=_max)
TOTALMTD(Suma('orden'[Cantidad]),dateadd('Fecha'[Fecha],-1,año),'Fecha'[Fecha]<=_max)






Gracias de nuevo por la respuesta. No mencioné que no hay un slicer que afecte la tarjeta que estoy creando. Se me ocurrió una nueva lógica que parece estar funcionando.

Total de horas - PMTD =
TOTALMTD([Horas totales],
FECHAAÑADIR(
FILTRO(
FECHASMTD('Calendario de búsqueda'[Fecha]),
'Calendario de búsqueda'[Fecha]<HOY()
),
-1,
MES
)
)

Hola @cheid

Es bueno saber que encontraste la solución. Sí, la fórmula que usó es la forma correcta cuando desea mostrar solo el valor del mes hasta la fecha del mes anterior. Ayuda a hacer coincidir el mismo rango de fechas en lugar de tomar el total del mes completo.

Gracias por compartir tu lógica de trabajo, también ayudará a otros.


Saludos
Equipo de apoyo comunitario.

Hola @cheid,

Me alegra saber que encontraste una lógica que parece estar funcionando. Si el problema se resuelve, eso es genial. Si aún tiene algún problema, no dude en comunicarse con nosotros nuevamente, estaremos encantados de ayudarlo.

Saludos
Equipo de apoyo comunitario.

Helpful resources

Announcements
Join our Fabric User Panel

Join our Fabric User Panel

Share feedback directly with Fabric product managers, participate in targeted research studies and influence the Fabric roadmap.

February Power BI Update Carousel

Power BI Monthly Update - February 2026

Check out the February 2026 Power BI update to learn about new features.

FabCon Atlanta 2026 carousel

FabCon Atlanta 2026

Join us at FabCon Atlanta, March 16-20, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.