Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
JRHans09
Resolver II
Resolver II

Comparing Historical DSO (Days Sales Outstanding)

In calculating DSO (Days Sales Outstanding) to analyze Accounts Receivable collection efficiency, I would like to compare current DSO data with historical DSO data to determine positive or negative trends in collection efficiency. The primary issue - the current accounts receivable balance is always changing based on payments received and with our current data model, we do not have static historical Accounts Receivable balances as of any given day in the past (similar to what inventory stock control models may have).

 

In order to analyze historical DSO figures, I need to be able to capture what the accounts receivable balance was as of any given day and hold that historical value for use with the standard DSO calculations.

 

We are using this calculation:

 

DSO 90 =

Total Accounts Receivable /

( Total Revenue in Past 90 Days / 90 Days )

 

This works well, but on a line graph, for past dates, the DSO always looks better than it actually was were we to have captured what the DSO was on that given date without any future receipts affecting the AR balance.

 

For example, if we have an invoice from 2 weeks ago, but the payment was not received until today, the DSO when calculated 2 weeks ago would be different than when we calculate the DSO for that date now.

 
Our model has an Invoice (Sales Revenue) fact table and a Receipt fact table. The Invoice table has a column showing original sales amount and remaining balance, but does not capture current balance as of any given day. As new payments are received, that outstanding balance is affected, but daily balances are not captured as of any given day. I have set up the data model with the Dates table linked to the Invoice table and the Receipts table linked to the Invoice table by Transaction ID. There is a Receipt date in the Receipt table, but linking the Dates table to the Receipt Date is not allowed due to circular reference.
 
Is it possible to solve this with changes to DAX and/or data model reconfiguration?
 
Can a new table be created using SUMMARIZE, ADDCOLUMN, and/or CROSSJOIN (or some combination like this) to always capture and maintain the AR balance as of a certain day without future receipts affecting these values in order to analyze historical DSO trends?

Hopefully, this is clear. Let me know if any further detail is required.
1 REPLY 1
amitchandak
Super User
Super User

@JRHans09 , I did not get it completely .But we can use cumulative measure for payment, due etc like

 

Cumm Sales = CALCULATE(SUM(Sales[Sales Amount]),filter(date,date[date] <=maxx(date,date[date])))
Cumm Sales = CALCULATE(SUM(Sales[Sales Amount]),filter(date,date[date] <=max(Sales[Sales Date])))

Rolling 90 days

Rolling 90 day = CALCULATE(sum(Sales[Sales Amount]),DATESINPERIOD(Table[Date Filer],MAX(Sales[Sales Date]),-90,Day))

 

Also, explore some old solutions

 

https://community.powerbi.com/t5/Desktop/Calculating-Days-Sales-Outstanding-DSO-historical/m-p/92594...

https://community.powerbi.com/t5/Desktop/DSO-Table/m-p/749470

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.