Forum Discussion
Get last 2 transactions
- Anonymous2 years ago
I think you'll need to create a rank column for the transactions by product;
Rank = RANKX( FILTER( ALL('Sales'), 'Sales'[Product] = EARLIER('Sales'[Product])), 'Sales'[Transaction Date],, DESC, Dense )Then for each of the other components, you can create additional columns; based on rank. You might need to adjust max to sum or whichever other aggregate you use for quantity.
Quantity #1 = CALCULATE(MAX('Sales'[Quantity]), FILTER( 'Sales', 'Sales'[Product] = EARLIER('Sales'[Product]) && 'Sales'[Rank] = 1))Expiry Date #1 = CALCULATE(MAX('Sales'[Expiry Date]), FILTER( 'Sales', 'Sales'[Product] = EARLIER('Sales'[Product]) && 'Sales'[Rank] = 1))and then create the same for #2, just changing the rank, then you can create your matrix
- 2 years ago
Based on your description, I created data to reproduce your scenario. The pbix file is attached in the end.
- Anonymous2 years ago
Hi,
Thanks for the solutions Anonymous and Ahmedx provided, and i want to offer some more information for user to refer to.
hello Oros , based on your description, you can refer to the following sample.
Sample data :
You can create the following measures
Experdate1 = VAR a = SUMMARIZE ( TOPN ( 2, FILTER ( ALLSELECTED ( 'Table' ), [Product] IN VALUES ( 'Table'[Product] ) ), CALCULATE ( MAX ( 'Table'[Transaction#] ) ), DESC ), [Transaction#] ) RETURN CALCULATE ( MAX ( 'Table'[Expiry] ), 'Table'[Transaction#] = MINX ( a, [Transaction#] ) )Experdate2 = VAR a = SUMMARIZE ( TOPN ( 2, FILTER ( ALLSELECTED ( 'Table' ), [Product] IN VALUES ( 'Table'[Product] ) ), CALCULATE ( MAX ( 'Table'[Transaction#] ) ), DESC ), [Transaction#] ) RETURN CALCULATE ( MAX ( 'Table'[Expiry] ), 'Table'[Transaction#] = MAXX ( a, [Transaction#] ) )Qty_1 = CALCULATE(SUM('Table'[Qty]),FILTER('Table','Table'[Expiry]=[Experdate1]))Qty_2 = CALCULATE(SUM('Table'[Qty]),FILTER('Table','Table'[Expiry]=[Experdate2]))Output
Best Regards!
Yolo Zhu
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
Hi Anonymous ,
Your solution is very close...one thing that I noticed is that the Ranking is based on the expiry date and NOT on the transaction #. This is the result of your solution.
| Product | Transaction | Qty | Expiry |
| 844477 | 0050 | 30 | January 9, 2025 |
| 844477 | 0055 | 75 | April 30, 2024 |
| 844477 | 0049 | 10 | September 28, 2024 |
Based on the table above, the correct result should be transactions 0050 and 0055 (January 9 and April 30). How do we adjust the RANK measure to reflect the transaction numbers instead?
Thanks again.
Rank =
RANKX(
FILTER( ALL('Sales'), 'Sales'[Product] = EARLIER('Sales'[Product])),
'Sales'[TransactionID],,
DESC,
Dense
)
- Oros2 years ago
Post Prodigy
Hi Anonymous ,
Thank you for your quick reply. Do I need to adjust the QTY and EXPIRY measures as well? If yes, what should be the modification?