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 Ahmedx ,
Thanks again for your reply. I can't a way to attach the sample pbix.
It looks like the measures are NOT based on the last 2 transactions for each product.
This is the undesired result
But the result should be based on the last 2 transactions for each product (example, product 1211)
Check solution below and it'll answer your question.
- Oros2 years ago
Post Prodigy
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.
- Anonymous2 years agoNot applicable
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?