Forum Discussion

_donev's avatar
_donev
Regular Visitor
8 years ago
Solved

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?

  • _donev

    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

  • _donev

    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