Forum Discussion
DAX help - Accounts Receivable Aging
- 8 years ago
Unfortunately that did not work. But luckily I stumbled on a formula that works. Here it is in case anyone is interested. I'd be happy to hear any suggestions as to improvements to this formula if any exist.
Total AR 0-30 =
VAR EndDate =
MAX ( 'Calendar'[Date] )
RETURN
IF (
MIN ( 'Calendar'[Date] )
<= CALCULATE ( MAX ('TransactionsTable'[PostingDate]), ALL ('TransactionsTable') ),
CALCULATE (
SUM ( 'TransactionsTable'[TransactionAmount] ),
FILTER ( ALL ( 'Calendar'[Date] ), 'Calendar'[Date] <= EndDate ),
KEEPFILTERS (
IFERROR (
DATEDIFF ( CustomerTable[CustomerCheckoutDate], EndDate, DAY ),
( DATEDIFF ( EndDate, CustomerTable[CustomerCheckoutDate], DAY ) ) * -1
)
< 31
)
)
)
can you share anonymized sample rows for the tables used?
is 31 the only age group you cover, or are there others, if so, what are they?
- robarivas8 years agoPost Patron
Hello Stachu. Thanks for your reply. Below is some sample data. I have a calendar table that is connected to the table below on the Transaction Date.
Ultimately I would want age groups for every 30 days up to 180 and then 180+. But I figured if I could get 0-30 figured out then I could take it from there to do the other buckets.
Account # Item # Transaction Date Transaction Amount CustomerCheckoutDate 1 532555 3/14/2018 $ 4,214.00 4/4/2018 1 134134 3/21/2018 $ 1,354.00 4/4/2018 1 413443 2/6/2018 $ 1,661.00 4/4/2018 1 412141 4/5/2018 $ 1,838.00 4/4/2018 2 585811 2/13/2018 $ 2,065.00 2/22/2018 2 147547 2/24/2018 $ 4,238.00 2/22/2018 2 454787 2/9/2018 $ 3,698.00 2/22/2018 - Stachu8 years agoCommunity Champion
hmm, can you try this?
LessThan31 = VAR DaysOverdue = ADDCOLUMNS ( Transactions, "DaysOverdue", Transactions[CustomerCheckoutDate] - Transactions[Transaction Date] ) VAR LessThan31 = FILTER ( DaysOverdue, [DaysOverdue] < 31 ) RETURN CALCULATE ( SUM ( Transactions[Transaction Amount] ), LessThan31 )I wasn't clear whether you need to calculate the days on row level (current syntax) or grouped per Account/Account&Item, if grouping is possible then Summarize could replace whole Transactions table
Also the problem becones very easy once you add calculated column forTransactions[CustomerCheckoutDate] - Transactions[Transaction Date]
the question is whether it makes sense from aggregation angle
- robarivas8 years agoPost Patron
Unfortunately that did not work. But luckily I stumbled on a formula that works. Here it is in case anyone is interested. I'd be happy to hear any suggestions as to improvements to this formula if any exist.
Total AR 0-30 =
VAR EndDate =
MAX ( 'Calendar'[Date] )
RETURN
IF (
MIN ( 'Calendar'[Date] )
<= CALCULATE ( MAX ('TransactionsTable'[PostingDate]), ALL ('TransactionsTable') ),
CALCULATE (
SUM ( 'TransactionsTable'[TransactionAmount] ),
FILTER ( ALL ( 'Calendar'[Date] ), 'Calendar'[Date] <= EndDate ),
KEEPFILTERS (
IFERROR (
DATEDIFF ( CustomerTable[CustomerCheckoutDate], EndDate, DAY ),
( DATEDIFF ( EndDate, CustomerTable[CustomerCheckoutDate], DAY ) ) * -1
)
< 31
)
)
)