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
pistachio
Helper I
Helper I

Historical Overdue Days - Cumulative Pattern based on FIFO Transactions

I have a database of account transactions, each transaction has an overdue element (or blank) e.g.

DateAccountElementValueOverdue
31-Mar-19JackPmt Due 250.00
1-Apr-19Jack Pmt Received-50      (50.00)
2-Apr-19JackStatement Fee12 
1-May-19JackPmt Received-50(50.00)

 

The total overdues can be calculated using the cumulative pattern:

Overdue balance :=
CALCULATE (
    SUM ( Transactions[Overdue] ),
    FILTER (
        ALL ( 'Date'[Date] ),
        'Date'[Date] <= MAX( 'Date'[Date] )
    )
)

I want to find the balance which is more than 30 days overdue in the current context. E.g. On 1 Apr this account had $150 which was more than 30 days overdue. 

1 ACCEPTED SOLUTION
Anonymous
Not applicable

try these:

TOTAL OVERDUE = 
CALCULATE( 
    SUM( FactAccountTransaction[Overdue]),
        FILTER( DimDate, MAX(DimDate[Date]) >= DATEADD( DimDate[Date], -30, DAY ))
)

Total OverDue RT = 
IF(
    COUNTROWS(FactAccountTransaction) >=1,
    CALCULATE( 
        [TOTAL OVERDUE], 
        FILTER( 
            ALL( DimDate), 
            MAX( DimDate[Date]) >= DimDate[Date])
    )
)

View solution in original post

6 REPLIES 6
Anonymous
Not applicable

Should be relatively easy, just not seeing how you are getting 150 for April first though. What would the value be on April 2nd and May 1st?

parry2k
Super User
Super User

@pistachio how did you get $150 as overdue on April 01 for account Jack. Numbers doesn't adds up, may be you showed partial data?



Subscribe to the @PowerBIHowTo YT channel for an upcoming video on List and Record functions in Power Query!!

Learn Power BI and Fabric - subscribe to our YT channel - Click here: @PowerBIHowTo

If my solution proved useful, I'd be delighted to receive Kudos. When you put effort into asking a question, it's equally thoughtful to acknowledge and give Kudos to the individual who helped you solve the problem. It's a small gesture that shows appreciation and encouragement! ❤


Did I answer your question? Mark my post as a solution. Proud to be a Super User! Appreciate your Kudos 🙂
Feel free to email me with any of your BI needs.

Sorry I got my months mixed up. The account was $150 overdue on 1 May ($250 expected less $100 received since).

  • 31 March - Acct is $250 overdue, 0 days overdue
  • 1 April - Acct is $200 overdue, entire overdue amt is 1 day overdue
  • 20 April - Acct is $200 overdue. If there was a $50 payment expected this day the total overdue would increase by $50 (to $250) but only $200 would be 20 days overdue.
  • 1 May - Acct is $150 overdue, 30 days overdue
Anonymous
Not applicable

That makes more sense 🙂

 

I did this by these two measures:

TOTAL OVERDUE = 
CALCULATE( 
    SUM( Table1[Overdue]),
        FILTER( Table1, MAX( Table1[Date]) >= DATEADD( Table1[Date], -30, DAY ))
)

Total OverDue RT = 
CALCULATE( 
    [TOTAL OVERDUE], 
    FILTER( ALL( Table1), MAX( Table1[Date]) >= Table1[Date]))

Running total of days overdue.png

 

You will want to have a Calendar table that is related to your fact table though and use the dates from the Calendar table for your rows and in the filter arguments above

Thank you for your quick response but I'm having trouble understanding and implementing this and translating to my table names, particularly the circular date filters in your example.

 

I do have a date table. These formulas are coming up with a hugely negative value

// Does this sum overdues in the last 30 days? 
BankOD30 = CALCULATE ( SUM ( FactAccountTransaction[Overdue] ), FILTER ( FactAccountTransaction, MAX ( FactAccountTransaction[DatePosted] ) >= DATEADD ( FactAccountTransaction[DatePosted], -30, DAY ) ) )

// Sums 30+ overdues for all time periods
BankOD RT =
CALCULATE (
    [BankOD30],
    FILTER (
        ALL ( FactAccountTransaction ),
        FactAccountTransaction[DatePosted] <= LASTDATE ( DimDate[Date] )
    )
)
Anonymous
Not applicable

try these:

TOTAL OVERDUE = 
CALCULATE( 
    SUM( FactAccountTransaction[Overdue]),
        FILTER( DimDate, MAX(DimDate[Date]) >= DATEADD( DimDate[Date], -30, DAY ))
)

Total OverDue RT = 
IF(
    COUNTROWS(FactAccountTransaction) >=1,
    CALCULATE( 
        [TOTAL OVERDUE], 
        FILTER( 
            ALL( DimDate), 
            MAX( DimDate[Date]) >= DimDate[Date])
    )
)

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.