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

The Power BI Data Visualization World Championships is back! It's time to submit your entry. Live now!

Reply
Syndicate_Admin
Administrator
Administrator

Mostrar total acumulado últimos n meses a partir de la fecha seleccionada

Hola a todos

Estoy tratando de resolver una solución para el filtrado dinámico de los últimos N meses de importe de transacción acumulativa. Lo que quería es seleccionar el número de meses del filtro Últimos N Meses (creado a través de parámetro) en función de la fecha seleccionada de otro filtro (que es una tabla de fechas desconectada de la fecha distinta de la tabla de hechos).

Pude crear un mesure para la Cantidad Total De Transsaction y me está dando el resultado exacto que quería. Pero no puedo hacer que funcione para el importe de transacción acumulativa, ya que básicamente devuelve la misma salida del importe total de la transacción.

LarsAustin_0-1618184696710.png

Lo que quería es en lugar de devolver los valores en rojo,quiero los valores junto a él (es decir, $324,835 en lugar de -$82,014, $385,398 en lugar de -$21,451 y así sucesivamente). También quiero que el valor en abril-2021 esté en blanco.

A continuación se muestra la medida DAX:

Importe acumulado de la transacción Últimos N Meses =

VAR CurrentDate = MAX(DateFilter[Fecha])
VAR PreviousDate = FECHA(YEAR(CurrentDate),MONTH(CurrentDate)-[Último N Meses Valor]+1,DAY(CurrentDate))
Resultado del VAR = CALCULATE([Importe de la transacción acumulativa],FILTER(ALL(TransactionTbl[Date]),TransactionTbl[Date]>=PreviousDate && TransactionTbl[Date]<=CurrentDate))
devolución
resultado
También adjunté el PBIX.
He probado la mayoría de las soluciones desde un puesto similar, pero no puedo hacer que funcione. Apreciaré cualquier ayuda.
gracias
LarsAustin

1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

// Because your model is not structured correctly
// with a proper date table, you pay the price
// by having a complex calculation of the previous
// date. You've got yourself to blame for that.

Cumulative Transaction Amount Last N Months =
var MonthsBack = [Last N Months Value]
VAR CurrentDate = SELECTEDVALUE( DateFilter[Date] )
var CurrentYear = Year( CurrentDate )
var CurrentMonth = Month( CurrentDate )
var PreviousYear_ =
    CurrentYear
    - CEILING(
        DIVIDE(
            MAX( 0, MonthsBack - CurrentMonth ),
            12
        ),
        1
    )
var PreviousMonth_ = 
    1 + MOD(
        CurrentMonth - MonthsBack,
        12 
    )
VAR PreviousDate =
    DATE(
        PreviousYear_,
        PreviousMonth_,
        1
    )
VAR Result =
    CALCULATE(
        [Cumulative Transaction Amount],
        PreviousDate <= TransactionTbl[Date],
        TransactionTbl[Date] <= CurrentDate,
        // This last line must be here if the column
        // comes from TransactionTbl. If it comes from
        // the disconnected table, you don't have to
        // add it.
        REMOVEFILTERS( TransactionTbl[MonthYear] )
    )
RETURN
    Result

A pesar de que la medida anterior funciona, es frágil porque su modelo es incorrecto. Le sugiero encarecidamente que cree un buen modelo para que los cálculos basados en el tiempo se puedan realizar utilizando los medios estándar: una tabla de fechas adecuada y las funciones de información de tiempo. Esto también eliminará la complejidad de la medida anterior.

View solution in original post

4 REPLIES 4
Syndicate_Admin
Administrator
Administrator

hola

No estoy seguro de lo que desea, pero ver si este artículo en mi sitio ayuda - Flexionar una tabla dinámica para mostrar los datos durante x meses terminó un cierto mes definido p...

Muchas gracias por los comentarios ashish. Yo mismo encontré una solución que leeré el aricle.

salud

LarsAustin

Syndicate_Admin
Administrator
Administrator

// Because your model is not structured correctly
// with a proper date table, you pay the price
// by having a complex calculation of the previous
// date. You've got yourself to blame for that.

Cumulative Transaction Amount Last N Months =
var MonthsBack = [Last N Months Value]
VAR CurrentDate = SELECTEDVALUE( DateFilter[Date] )
var CurrentYear = Year( CurrentDate )
var CurrentMonth = Month( CurrentDate )
var PreviousYear_ =
    CurrentYear
    - CEILING(
        DIVIDE(
            MAX( 0, MonthsBack - CurrentMonth ),
            12
        ),
        1
    )
var PreviousMonth_ = 
    1 + MOD(
        CurrentMonth - MonthsBack,
        12 
    )
VAR PreviousDate =
    DATE(
        PreviousYear_,
        PreviousMonth_,
        1
    )
VAR Result =
    CALCULATE(
        [Cumulative Transaction Amount],
        PreviousDate <= TransactionTbl[Date],
        TransactionTbl[Date] <= CurrentDate,
        // This last line must be here if the column
        // comes from TransactionTbl. If it comes from
        // the disconnected table, you don't have to
        // add it.
        REMOVEFILTERS( TransactionTbl[MonthYear] )
    )
RETURN
    Result

A pesar de que la medida anterior funciona, es frágil porque su modelo es incorrecto. Le sugiero encarecidamente que cree un buen modelo para que los cálculos basados en el tiempo se puedan realizar utilizando los medios estándar: una tabla de fechas adecuada y las funciones de información de tiempo. Esto también eliminará la complejidad de la medida anterior.

Hola Daxer. Muchas gracias por sus comentarios y por tomarse el tiempo para buscar una solución a mi problema. De hecho, encontré la solución (Medir detalles a continuación). La clave es el uso de SELECTEDVALUE. No es tan elegante (y tal vez no tan eficiente) como la solución que se te ocurrió, pero funciona.

También hice cambios en la variable PreviousMonth mediante EDATE en lugar de DATE.

Importe acumulado de la transacción Últimos N Meses =
VAR CurrentDate = MAX(DateFilter[Fecha])
VAR PreviousDate = EDATE(CurrentDate,-([Valor de los últimos N meses]-1))
RESULTADO VAR = CALCULATE([Importe de la transacción acumulativa],FILTER(ALL(TransactionTbl[Date]),SELECTEDVALUE(TransactionTbl[Date])>=PreviousDate && SELECTEDVALUE(TransactionTbl[Date])<=CurrentDate))
devolución
resultado

gracias

LarsAustin

Helpful resources

Announcements
Power BI DataViz World Championships

Power BI Dataviz World Championships

The Power BI Data Visualization World Championships is back! It's time to submit your entry.

December 2025 Power BI Update Carousel

Power BI Monthly Update - December 2025

Check out the December 2025 Power BI Holiday Recap!

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.