Join us at FabCon Atlanta from March 16 - 20, 2026, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.
Register now!Get Fabric Certified for FREE during Fabric Data Days. Don't miss your chance! Request now
Hello,
I have a table of transactions and I need to make a report in which we only consider the first transaction that each user made.
One way I could solve this is to duplicate the transactions table, sort by ascending date, and remove duplicates from the user field. But I know I could create a DAX measure or DAX column that does it in a more practical way, how could I do it?
Table: transactions of every user
Fields involved: Date (I want the first purchase for every user); User (unique id for every user)
Solved! Go to Solution.
Assuming that your model has transactions table, a date table, and a user table:
# First Transaction Date =
CALCULATE(
MIN(Transactions[TransactionDate]),
ALLEXCEPT(
Transactions,
Transactions[UserID],
'Users'
)
)See this article on daxpatterns.com for further reading:
New and returning customers – DAX Patterns
Assuming that your model has transactions table, a date table, and a user table:
# First Transaction Date =
CALCULATE(
MIN(Transactions[TransactionDate]),
ALLEXCEPT(
Transactions,
Transactions[UserID],
'Users'
)
)See this article on daxpatterns.com for further reading:
New and returning customers – DAX Patterns
Check out the November 2025 Power BI update to learn about new features.
Advance your Data & AI career with 50 days of live learning, contests, hands-on challenges, study groups & certifications and more!
| User | Count |
|---|---|
| 11 | |
| 9 | |
| 9 | |
| 6 | |
| 5 |
| User | Count |
|---|---|
| 27 | |
| 22 | |
| 19 | |
| 17 | |
| 11 |