Forum Discussion
DAX - count header rows only if specific details
I am trying to get my head around this DAX measure. I have a denormalized Master-Detail tables with Orders of products. The model is relatively large (200+ mln rows) and I am looking for the most optimal way to have the following measure: Count all distinct orders, that have both ProductID 100 and ProductID 101
In the source data below, that would be just 1 order.
Any pointers, articles or hints?
If it's always those two particular ProducID values that you are interested in, then this is the fastest performing measure I could come up with on some test data:
Orders with both 100 & 101 = VAR Orders_100 = CALCULATETABLE ( VALUES ( Orders[OrderID] ), Orders[ProductID] = "100" ) VAR Orders_101 = CALCULATETABLE ( VALUES ( Orders[OrderID] ), Orders[ProductID] = "101" ) RETURN COUNTROWS ( INTERSECT ( Orders_100, Orders_101 ) )If you needed a more general measure that could handle any selection of ProductID values then that would be a bit different.
Regards,
Owen
1 Reply
- OwenAuger
Super User
If it's always those two particular ProducID values that you are interested in, then this is the fastest performing measure I could come up with on some test data:
Orders with both 100 & 101 = VAR Orders_100 = CALCULATETABLE ( VALUES ( Orders[OrderID] ), Orders[ProductID] = "100" ) VAR Orders_101 = CALCULATETABLE ( VALUES ( Orders[OrderID] ), Orders[ProductID] = "101" ) RETURN COUNTROWS ( INTERSECT ( Orders_100, Orders_101 ) )If you needed a more general measure that could handle any selection of ProductID values then that would be a bit different.
Regards,
Owen