Forum Discussion
cumulative sum
Hello I would like to obtain this result
I want to make a cumulative sum each in relation to my previous value, my base value is that of B
| index | A | B |
| 1 | 10 | 15 |
| 2 | 20 | =15+20=35 |
| 3 | 30 | =35+30=65 |
| 4 | 40 | =65+40=105 |
Result:
| Index | A | B |
| 1 | 10 | 15 |
| 2 | 20 | 35 |
| 3 | 30 | 65 |
| 4 | 40 | 105 |
earlier doesn't work
B =
thank you for your feedback
- Anonymous1 year ago
Hi Anonymous ,
powerbidev123's reply could return the result you want. However if A1 is not 10, it will not work. I don't suggest you to use EARLIER() function, it may cause bad performance if you have large size of data.You can also try my code to create a calculated column.
B = VAR _B1 = 15 VAR _CurrentIndex = 'Table'[index] RETURN IF ( 'Table'[index] = 1, _B1, _B1 + CALCULATE ( SUM ( 'Table'[A] ), FILTER ( 'Table', 'Table'[index] > 1 && 'Table'[index] <= _CurrentIndex ) ) )Result is as below.
Best Regards,
Rico ZhouIf this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
7 Replies
- powerbidev123Solution Sage
Hi Anonymous , Let me know if this helps
B =5 + SUMX(FILTER('Table (3)','Table (3)'[Index] <= EARLIER('Table (3)'[Index])),'Table (3)'[A]) - AnonymousNot applicable
Hi Anonymous ,
powerbidev123's reply could return the result you want. However if A1 is not 10, it will not work. I don't suggest you to use EARLIER() function, it may cause bad performance if you have large size of data.You can also try my code to create a calculated column.
B = VAR _B1 = 15 VAR _CurrentIndex = 'Table'[index] RETURN IF ( 'Table'[index] = 1, _B1, _B1 + CALCULATE ( SUM ( 'Table'[A] ), FILTER ( 'Table', 'Table'[index] > 1 && 'Table'[index] <= _CurrentIndex ) ) )Result is as below.
Best Regards,
Rico ZhouIf this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
- bhanu_gautamSuper User
Anonymous , Try using
Cumulative B =
CALCULATE(
SUM(test[A]),
FILTER(
ALL(test),
test[Index] <= MAX(test[Index])
)
) + MIN(test[B])- AnonymousNot applicable
hi bhanu_gautam thank you for your feedback, but I would like to fill my column B from the second and each time by making my value from the current line of my column A + my last value from the previous line of column B
- AnonymousNot applicable
- bhanu_gautamSuper User
Anonymous , Try using
B =
IF (
test[Index] = 1,
test[B],
test[A] +
CALCULATE(
MAX(test[B]),
FILTER(
test,
test[Index] = EARLIER(test[Index]) - 1
)
)
)