Join us for an expert-led overview of the tools and concepts you'll need to pass exam PL-300. The first session starts on June 11th. See you there!
Get registeredPower BI is turning 10! Let’s celebrate together with dataviz contests, interactive sessions, and giveaways. Register now.
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
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!
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?
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
)
)
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.
Debido a que mis datos están en el formato anterior, cuando aplico la lógica que sugirió, obtengo el siguiente resultado.
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
)
)
@danextian @Ritaf1983 @rajendraongole1 @Greg_Deckler @Ashish_Mathur @lbendlin @amitchandak @jdbuchanan71 @v-yangliu-msft @v-yangyu3-msft - Cualquier ayuda aquí es muy apreciada. ¡Gracias!