Forum Discussion
Rolling sum no from zero
Hola
Estoy trabajando en una suma de carreras, pero esta vez necesito algo diferente:
Como primer paso construí una suma móvil estándar:
ROLLING SUM - CALCULATE(sum(SCADENZE[AMOUNT]), filter(ALLSELECTED(SCADENZE), SCADENZE[DATA SCADENCE]<-MAX(SCADENZE[DATE DATE]))))
Hace una suma balanceable de la variación previsional positiva/negativa en la cuenta bancaria.
Ahora necesito que el cálculo no comience desde Cero, sino desde el saldo de la cuenta bancaria
Hice una medida para calcular el saldo de la cuenta bancaria en "tiempo cero" y ahora necesito crear una nueva medida para "decir" a powerBi no empezar desde CERO sino desde BANK_BALANCE
Si hago esto:
• BANK_BALANCE + ROLLING SUM
No funciona, Hace el cálculo para cada día. Necesito que el saldo del Banco se considere sólo para el primer día.
Un ejemplo puede ayudarme a explicar mejor:
| Fecha | BALANCE BANCARIO* | Variación | Incorrecto | Incorrecto | Correcto |
| 25.09.20 | 1000 | +200 | 200 | 1200 | 1200 |
| 26.09.20 | 1000 | +400 | 600 | 1400 | 1600 |
| 30.09.20 | 1000 | -100 | 500 | 900 | 1500 |
| 02.10.20 | 1000 | -700 | -200 | 300 | 800 |
* El saldo bancario no cambia porque estamos hablando de variaciones futuras aún no han ocurrido.
Gracias por la ayuda
Hola @paolomint ,
Tal vez entiendo lo que quieres decir. En función de su descripción, tiene dos tablas y desea que el importe se conserve en la tabla "banco" como el importe inicial de la tabla de "flujo".
Prueba la medida.
ROLL_FLOW = VAR base = [ROLL_BANK] VAR end_date = CALCULATE ( MAX ( Bank[Date] ), ALL ( Bank ) ) RETURN IF ( MAX ( FLOW[Date] ) > end_date, CALCULATE ( SUM ( FLOW[VARIATION] ), FILTER ( ALLSELECTED ( FLOW ), FLOW[Date] <= MAX ( FLOW[Date] ) ) ) + base, BLANK () )Saludos
Liang
Si este post ayuda, entonces considera Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
6 Replies
- Fowmy
Super User
@paolomint
No muy claro sobre el requisito.
¿Puede comprobar esto, Repace el XXXXX con el archivo que necesita para net offROLLING SUM = CALCULATE ( SUM ( SCADENZE[IMPORTO] ) - SUM ( SCADENZE[xxxxx] ), FILTER ( ALLSELECTED ( SCADENZE ), SCADENZE[DATA SCADENZA] <= MAX ( SCADENZE[DATA SCADENZA] ) ) )________________________
Si mi respuesta fue útil, considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla
Haga clic en el icono Thumbs-Up si le gusta esta respuesta 🙂
- paolomint
Helper III
Hola @Fowmy
gracias por su respuesta rápida, no funciona,
Permítanme tratar de explicar mejor con un ejemplo
Las transacciones de saldo de cuenta están en una tabla [BANK]
BALANCE DE APERTURA : 1000
Fecha Variación 01.09.2020 +300 02.09.2020 -400 05.09.2020 +800 BALANCE FINAL : 1700
Para obtener el saldo final puedo utilizar una fórmula clásica de RUNNING SUM:
ROLL_BANK: CALCULATE(sum(BANK[VARIATION]), filter(ALLSELECTED(BANK), BANK[DATE]<-MAX(BANK[DATE])))
--------------------------------------------------------------------------------------------------------------------------------------
En otra tabla tengo la futura varación [FLOW]
Fecha Variación 25.09.2020 +200 30.09.2020 -500 05.10.2020 - 400 ROLLING SUM - 700 Fórmula RUNNING SUM:
ROLL_FLOW: CALCULATE(sum(FLOW[VARIATION]), filter(ALLSELECTED(FLOW), FLOW[DATE]<-MAX(FLOW[DATE])))
---------------------------------------------------------------------------------------------------------------------------------------
Necesito una medida para obtener el siguiente resultado:
Fecha Variación 25.09.2020 1900 30.09.2020 1400 05.10.2020 1000 Gracias por tu ayuda
Adiós
- Ashish_Mathur
Super User
Hola
En la tabla BANK, no tiene sentido tener una entrada de texto (saldo de apertura) en una columna Fecha. Debe haber una fecha en lugar de esa entrada de texto.