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!The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now! Learn more
Hi,
I need help optimization in dax measure.
I'm counting customers who had turnover greater than 10. The sales table has customers, document numbers, products, so I to group the turnover by customer and then filter the total above 10.
Here is the formula:
Customers Qty Turnover > 10 =
VAR _group =
ADDCOLUMNS (
VALUES ( Sales[CustomerNameGrouped] ),
"Turnover", [Turnover]
)
VAR _filter =
FILTER ( _group, [Turnover] > 10 )
VAR _result =
CALCULATE (
DISTINCTCOUNT(Sales[CustomerNameGrouped]),
_filter
)
RETURN _result
When I put this in matrix (customers in rows, months in columns), table is very slow. Performance analyzer shows me after scrolling that dax measure took more than 6 seconds. So I don't know how to perform it better.
Sales table has about 150k rows.
Solved! Go to Solution.
@krisstok Try this:
Customers Qty Turnover > 10 =
VAR __Table = CALCULATETABLE('Sales',KEEPFILTERS(DISTINCT('Sales'[CustomerNameGrouped)),[Turnover] > 10)
RETURN
COUNTROWS(DISTINCT(SELECTCOLUMNS(__Table,"__Group",[CustomerNameGrouped)))
or maybe:
Customers Qty Turnover > 10 =
VAR __Table = FILTER(SUMMARIZE('Sales',[CustomerNameGrouped],"__Turnover",[Turnover]),[__Turnover] > 10)
RETURN
COUNTROWS(DISTINCT(SELECTCOLUMNS(__Table,"__Group",[CustomerNameGrouped)))
@krisstok Try this:
Customers Qty Turnover > 10 =
VAR __Table = CALCULATETABLE('Sales',KEEPFILTERS(DISTINCT('Sales'[CustomerNameGrouped)),[Turnover] > 10)
RETURN
COUNTROWS(DISTINCT(SELECTCOLUMNS(__Table,"__Group",[CustomerNameGrouped)))
or maybe:
Customers Qty Turnover > 10 =
VAR __Table = FILTER(SUMMARIZE('Sales',[CustomerNameGrouped],"__Turnover",[Turnover]),[__Turnover] > 10)
RETURN
COUNTROWS(DISTINCT(SELECTCOLUMNS(__Table,"__Group",[CustomerNameGrouped)))
Hey, thanks for respond.
Second solution works, now performance analyzer shows 800ms :).
First solution doesn't, it says:
A function 'PLACEHOLDER' has been used in a True/False expression that is used as a table filter expression. This is not allowed.
Thanks for help!
The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now!
Check out the November 2025 Power BI update to learn about new features.
| User | Count |
|---|---|
| 20 | |
| 11 | |
| 10 | |
| 4 | |
| 4 |
| User | Count |
|---|---|
| 32 | |
| 28 | |
| 19 | |
| 11 | |
| 10 |