Forum Discussion

clo_64's avatar
clo_64
Frequent Visitor
4 years ago
Solved

How to create a filter with count

I would like to create a short table showing how much customers have bought how much product,s and I'm struggling getting the COUNT or COUNTROWS working as an expression within CALCULATE/CALCULATETABLE.

Here my table :

And would like to get:
Nbr of Products     Nbr of Customers
1                             3
2                             2

How do I do that with DAX?
Thanks

  • Hi clo_64,

     

    I think I got to a solution:

     

     

    Here the DAX:

    New Table = 
    VAR _helpTable =
    SUMMARIZE (
        TableCustomerProduct,
        TableCustomerProduct[Customer],
        "Nbr of Products", DISTINCTCOUNT ( TableCustomerProduct[Product] )
    )
    RETURN
    SUMMARIZE (
        _helpTable,
        [Nbr of Products],
        "Nbr of Customers",
        CALCULATE (
            DISTINCTCOUNT ( 'TableCustomerProduct'[Customer] ),
            FILTER (
                VALUES ( 'TableCustomerProduct'[Customer] ),
                CALCULATE ( DISTINCTCOUNT ( TableCustomerProduct[Product] ) ) = [Nbr of Products]
            )
        )
    )

     

    The _helpTable does a grouping on customer with a distinct count on product. The return statement uses the Number of Products from the _helptable combined  with a "having clause" in order to retrieve the number of customers per number of products

     

    Let me know if this helps 🙂

     

    /Tom
    https://www.tackytech.blog/
    https://www.instagram.com/tackytechtom/

     

4 Replies

  • Hi,

     

    Coulld you explain why you have 2 2 on the second line of your output?  Shouldn't it be 2 1, as only the customer Gamma has bought 2 products?

     

    Best regards.

    • clo_64's avatar
      clo_64
      Frequent Visitor

      Because Ypsilon has also bought 2 distint products.

  • tackytechtom's avatar
    tackytechtom
    Most Valuable Professional

    Hi clo_64,

     

    I think I got to a solution:

     

     

    Here the DAX:

    New Table = 
    VAR _helpTable =
    SUMMARIZE (
        TableCustomerProduct,
        TableCustomerProduct[Customer],
        "Nbr of Products", DISTINCTCOUNT ( TableCustomerProduct[Product] )
    )
    RETURN
    SUMMARIZE (
        _helpTable,
        [Nbr of Products],
        "Nbr of Customers",
        CALCULATE (
            DISTINCTCOUNT ( 'TableCustomerProduct'[Customer] ),
            FILTER (
                VALUES ( 'TableCustomerProduct'[Customer] ),
                CALCULATE ( DISTINCTCOUNT ( TableCustomerProduct[Product] ) ) = [Nbr of Products]
            )
        )
    )

     

    The _helpTable does a grouping on customer with a distinct count on product. The return statement uses the Number of Products from the _helptable combined  with a "having clause" in order to retrieve the number of customers per number of products

     

    Let me know if this helps 🙂

     

    /Tom
    https://www.tackytech.blog/
    https://www.instagram.com/tackytechtom/

     

    • clo_64's avatar
      clo_64
      Frequent Visitor

      Excellent! Very smart this double SUMMARIZE!
      Thanks Tom