Forum Discussion
Forecasting payment date with calculated average
- 6 years ago
Hi, ManPi
There are two ways.
First way: You may create a calculated column and a measure as follows.
Average paymentterm Column = CALCULATE( AVERAGE('Table'[Days paid]), FILTER( ALLSELECTED('Table'), 'Table'[Customer] = EARLIER('Table'[Customer])&& NOT ISBLANK('Table'[Payment date]) ) ) Expected payment date = var _value = CALCULATE( SUM('Table'[Average paymentterm Column]), FILTER( ALLSELECTED('Table'), 'Table'[Customer] = MAX('Table'[Customer]) ) )- CALCULATE( SUM('Table'[Days paid]), FILTER( ALLSELECTED('Table'), 'Table'[Customer] = MAX('Table'[Customer]) ) ) return IF( ISBLANK(MAX('Table'[Payment date])), MAX('Table'[Invoice date])+_value, BLANK() )Second way: You may create two measures as below.
Average paymentterm Measure = CALCULATE( AVERAGE('Table'[Days paid]), FILTER( ALLSELECTED('Table'), 'Table'[Customer] = MAX('Table'[Customer])&& NOT ISBLANK('Table'[Payment date]) ) ) Expected payment date Measure = var _value = CALCULATE( SUMX( FILTER( ALLSELECTED('Table'), 'Table'[Customer] = MAX('Table'[Customer]) ), [Average paymentterm Measure] ) )- CALCULATE( SUM('Table'[Days paid]), FILTER( ALLSELECTED('Table'), 'Table'[Customer] = MAX('Table'[Customer]) ) ) return IF( ISBLANK(MAX('Table'[Payment date])), MAX('Table'[Invoice date])+_value, BLANK() )Result:
Best Regards
Allan
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
Hi, ManPi
There are two ways.
First way: You may create a calculated column and a measure as follows.
Average paymentterm Column =
CALCULATE(
AVERAGE('Table'[Days paid]),
FILTER(
ALLSELECTED('Table'),
'Table'[Customer] = EARLIER('Table'[Customer])&&
NOT ISBLANK('Table'[Payment date])
)
)
Expected payment date =
var _value =
CALCULATE(
SUM('Table'[Average paymentterm Column]),
FILTER(
ALLSELECTED('Table'),
'Table'[Customer] = MAX('Table'[Customer])
)
)-
CALCULATE(
SUM('Table'[Days paid]),
FILTER(
ALLSELECTED('Table'),
'Table'[Customer] = MAX('Table'[Customer])
)
)
return
IF(
ISBLANK(MAX('Table'[Payment date])),
MAX('Table'[Invoice date])+_value,
BLANK()
)
Second way: You may create two measures as below.
Average paymentterm Measure =
CALCULATE(
AVERAGE('Table'[Days paid]),
FILTER(
ALLSELECTED('Table'),
'Table'[Customer] = MAX('Table'[Customer])&&
NOT ISBLANK('Table'[Payment date])
)
)
Expected payment date Measure =
var _value =
CALCULATE(
SUMX(
FILTER(
ALLSELECTED('Table'),
'Table'[Customer] = MAX('Table'[Customer])
),
[Average paymentterm Measure]
)
)-
CALCULATE(
SUM('Table'[Days paid]),
FILTER(
ALLSELECTED('Table'),
'Table'[Customer] = MAX('Table'[Customer])
)
)
return
IF(
ISBLANK(MAX('Table'[Payment date])),
MAX('Table'[Invoice date])+_value,
BLANK()
)
Result:
Best Regards
Allan
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
Hi Allan,
Unfortunately the measure doesn't work when there are more than one unpaid invoices. The SUM of the average paymentterm colum gets a value for every invoice and with that the difference with the SUM of the Days paid is to high.
Do you know a nother sollution?
Kind regards,
Mandy