Forum Discussion
PDE
2 years agoRegular Visitor
Distributing 1 amount over different months
Hi
In my model I only have a 1 column table that lists several future periods (format YYYYMM).
I would like to distribute 1000 USD over these months. Each month should be allocated with 99 USD, until the whole amount has been fully allocated. I can't seem to find an elegant solution for this.
The desired output is pictured below.
Thanks in advance,
PDE
I have also tried a soluton, please check. Two calculated columns need to be added to your table:Allocation = var __amount = 1000 var __monthly = 99 var __cumm = __monthly + __amount - SUMX( FILTER( 'Table' , 'Table'[Month] <= EARLIER( 'Table'[Month] ) ), __monthly) var __val = MAX( min( __monthly , __cumm ) ,0) return __valRunning Total = IF( 'Table'[Allocation] > 0 , SUMX( FILTER( 'Table' , 'Table'[Month] <= EARLIER( 'Table'[Month] ) ) , [Allocation] ))Allocation = MAX( MIN( 99, 1000 - COUNTROWS( WINDOW( 1, ABS, -1, REL, ALLSELECTED( data[Period] ) ) ) * 99 ), 0 )RT = MIN( COUNTROWS( WINDOW( 1, ABS, 0, REL, ALLSELECTED( data[Period] ) ) ) * 99, 1000 )
11 Replies
- FowmySuper User
PDE
I have also tried a soluton, please check. Two calculated columns need to be added to your table:Allocation = var __amount = 1000 var __monthly = 99 var __cumm = __monthly + __amount - SUMX( FILTER( 'Table' , 'Table'[Month] <= EARLIER( 'Table'[Month] ) ), __monthly) var __val = MAX( min( __monthly , __cumm ) ,0) return __valRunning Total = IF( 'Table'[Allocation] > 0 , SUMX( FILTER( 'Table' , 'Table'[Month] <= EARLIER( 'Table'[Month] ) ) , [Allocation] )) - FreemanZSuper User
Hi PDE ,
try to add two calculated columns like:
Allocation = VAR _periodmin = MIN([Period]) VAR _period = [Period] VAR _periodminSN = LEFT(_periodmin,4)*12+RIGHT(_periodmin, 2) VAR _periodSN = LEFT(_period,4)*12+RIGHT(_period, 2) VAR _gap = _periodSN -_periodminSN+1 VAR _quotient = QUOTIENT (1000, 99) VAR _mod = MOD(1000, 99) VAR _result = SWITCH( TRUE(), _gap<=_quotient, 99, _gap= _quotient+1, _mod, 0 ) RETURN _resultRT = IF( [Allocation]<>0, SUMX( FILTER( data, data[Period]<=EARLIER(data[Period]) ), [Allocation] ) )it worked like:
- PDERegular Visitor
Thank you!
- ThxAlotSuper User
Allocation = MAX( MIN( 99, 1000 - COUNTROWS( WINDOW( 1, ABS, -1, REL, ALLSELECTED( data[Period] ) ) ) * 99 ), 0 )RT = MIN( COUNTROWS( WINDOW( 1, ABS, 0, REL, ALLSELECTED( data[Period] ) ) ) * 99, 1000 )