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

Power BI is turning 10! Let’s celebrate together with dataviz contests, interactive sessions, and giveaways. Register now.

Reply
Syndicate_Admin
Administrator
Administrator

Cálculo recursivo del saldo de apertura y cierre

Equipo, tengo un requisito donde tengo una tabla con 3 campos 1. Fecha valor, 2. Importe real, 3. Cantidad de flujo, como se menciona a continuación, proveniente del backend

Fecha Cantidad real Cantidad de flujo
18/12/24 4,32,10,037
17/12/24 3,18,83,300
16/12/24 1,69,62,383
15/12/24 8,07,60,256
14/12/24 11,23,63,399
13/12/24 17,53,85,676
12/12/24 55,23,36,526
11/12/24 1,21,72,840
10/12/24 (37,08,72,079) 4,74,84,330
09/12/24 (37,08,60,843) 2,18,93,319
08/12/24 (37,07,90,934) 5,70,65,836
07/12/24 (37,07,90,934) 2,16,90,139
06/12/24 (37,07,90,934) 5,38,41,586
05/12/24 (37,07,90,934) 17,81,70,184
04/12/24 (37,07,90,689) 8,56,08,933
03/12/24 (37,07,90,689) 1,17,72,83,663

Ahora el requisito es crear la columna Fcst Amt desde donde termina el Monto real (es decir, 10/12/24). Al día siguiente (es decir, 11/12/24) en adelante, debemos calcular de forma recurrente sumando la cantidad de flujo.

Ejemplos:

El 11/12/24, debemos tomar el Importe real del día anterior -37,08,72,078 + 11/12/24 Importe de flujo 1,21,72,840 = -35,86,99,238

El 12/12/24, debemos tomar el día anterior Fcst Amt -35,86,99,238 + 12/12/24 Cantidad de flujo 55,23,36,525 = 19,26,37,287

El 13/12/24, debemos tomar el día anterior Fcst Amt 19,26,37,287 + 13/12/24 Cantidad de flujo 17,53,85,676 = 36,90,22,964

Salida esperada: Fcst Amt

akhilduvvuru_0-1739454996664.png

Quiero Fcst Amt como Columna Calculada, pero no la Medida porque quiero crear medidas de Opening Bal y Closing Bal en el campo Fcst Amt.

Atrapado con lo mismo. Por favor, que alguien ayude

¡Gracias!

5 REPLIES 5
Syndicate_Admin
Administrator
Administrator

Hola @akhilduvvuru , debe usar DAX con lógica recursiva. Desafortunadamente, DAX no admite la recursividad directa dentro de las columnas calculadas.

Cree una columna calculada como se muestra a continuación:

Fcst Amt =
VAR CurrentDate = 'Tabla'[Fecha]
VAR CurrentFlow = 'Tabla'[Cantidad de flujo]
VAR Fecha Anterior =
CALCULAR(
MAX('Tabla'[Fecha]),
FILTRO(
'Mesa',
'Table'[Date] < CurrentDate
)
)
VAR AnteriorFcstAmt =
CALCULAR(
MAX('Tabla'[Fcst Amt]),
FILTRO(
'Mesa',
'Tabla'[Fecha] = FechaAnterior
)
)
VAR AnteriorActualAmt =
CALCULAR(
MAX('Tabla'[Cantidad real]),
FILTRO(
'Mesa',
'Tabla'[Fecha] = FechaAnterior
)
)
DEVOLUCIÓN
SI(
ISBLANK('Tabla'[Cantidad real]),
COALESCE(AnteriorFcstAmt, AnteriorActualAmt) + CurrentFlow,
'Tabla'[Cantidad real]
)

Si Importe real está en blanco para la fila actual, calcula el importe de Fcst sumando el importe de flujo al Fcst Amt anterior. De lo contrario, utiliza el importe real como punto de partida.

¿Puede verificar la lógica anterior?

Syndicate_Admin
Administrator
Administrator

@akhilduvvuru

Creo que esto está haciendo lo que está buscando según mi muestra.

Fcst Amt = 
VAR _LastActual =
    CALCULATE (
        LASTNONBLANK ( 'Table'[Date], CALCULATE ( SUM ( 'Table'[Actual] ) ) ),
        ALL ( 'Table' )
    )
VAR _LastActualAmt =
    CALCULATE (
        LASTNONBLANKVALUE ( 'Table'[Date], CALCULATE ( SUM ( 'Table'[Actual] ) ) ),
        ALL ( 'Table' )
    )
VAR _RowDate = 'Table'[Date]
RETURN
    IF (
        NOT ISBLANK ( 'Table'[Actual] ),
        'Table'[Actual],
        _LastActualAmt
            + CALCULATE (
                SUM ( 'Table'[Flow] ),
                ALL ( 'Table' ),
                'Table'[Date] > _LastActual,
                'Table'[Date] <= _RowDate
            )
    )

jdbuchanan71_0-1739469804002.png

Gracias @jdbuchanan71 por tu ayuda. Pequeña corrección en la forma en que los datos están presentes.

Así es como se ven los datos. Por favor, ayúdanos con lo mismo.

akhilduvvuru_0-1739534541670.png

Debido a que mis datos están en el formato anterior, cuando aplico la lógica que sugirió, obtengo el siguiente resultado.

akhilduvvuru_1-1739534986904.png

Pruébalo así.

Fcst Amt = 
VAR _LastActual =
    CALCULATE (
        LASTNONBLANK ( 'Table'[Date], CALCULATE ( SUM ( 'Table'[Actual] ) ) ),
        ALL ( 'Table' )
    )
VAR _LastActualAmt =
    CALCULATE (
        LASTNONBLANKVALUE ( 'Table'[Date], CALCULATE ( SUM ( 'Table'[Actual] ) ) ),
        ALL ( 'Table' )
    )
VAR _RowDate = 'Table'[Date]
RETURN
    IF (
        _RowDate <= _LastActual,
        'Table'[Actual],
        _LastActualAmt
            + CALCULATE (
                SUM ( 'Table'[Flow] ),
                ALL ( 'Table' ),
                'Table'[Date] > _LastActual,
                'Table'[Date] <= _RowDate
            )
    )

jdbuchanan71_0-1739540597128.png

Syndicate_Admin
Administrator
Administrator

Helpful resources

Announcements
June 2025 Power BI Update Carousel

Power BI Monthly Update - June 2025

Check out the June 2025 Power BI update to learn about new features.

June 2025 community update carousel

Fabric Community Update - June 2025

Find out what's new and trending in the Fabric community.

Top Solution Authors