Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
6 years ago
Solved

Count distinct value with condition in column

Hi everyone,

I have a datatable and I want to display the top 5 Name with Value >15 and use 1 Slicer to filter the time:

I am a new user of Power BI and I don't know how to make this request, please help me. With Slicer, I know I need to create a list of Measures to perform filtering.

  • Hi Anonymous ,

     

    We can use the following steps to meet your requirement.

     

    1. Create a measure to calculate the distinct count value and the value is greater than 15.

     

    Measure = CALCULATE(DISTINCTCOUNT(A[Value]),A[Value]>15)

     

    2. Then we can put the measure to filter on this visual and filter TOP 5 name.

     

     

    The result like this,

     

     

    If it doesn’t meet your requirement, could you please show the exact expected result based on the table that you have shared?

    BTW, pbix as attached.

     

    Best regards,

     

    Community Support Team _ zhenbw

    If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

7 Replies

  • v-zhenbw-msft's avatar
    v-zhenbw-msft
    Icon for Community Support rankCommunity Support

    Hi Anonymous ,

     

    We can use the following steps to meet your requirement.

     

    1. Create a measure to calculate the distinct count value and the value is greater than 15.

     

    Measure = CALCULATE(DISTINCTCOUNT(A[Value]),A[Value]>15)

     

    2. Then we can put the measure to filter on this visual and filter TOP 5 name.

     

     

    The result like this,

     

     

    If it doesn’t meet your requirement, could you please show the exact expected result based on the table that you have shared?

    BTW, pbix as attached.

     

    Best regards,

     

    Community Support Team _ zhenbw

    If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

  • Create a measure like this

    Value GT = Calculate(Sum(Table[Value]),Table[Value]>15)

    Use a visual level filter to take the top 5 Name based on the value

     

    Ord create a rank and use that in a filter of the visual level filter

    Rank = rankx(all(Name),[Value GT ],,dese,dense)

     

    For Rank Refer these links
    https://radacad.com/how-to-use-rankx-in-dax-part-2-of-3-calculated-measures
    https://radacad.com/how-to-use-rankx-in-dax-part-1-of-3-calculated-columns
    https://radacad.com/how-to-use-rankx-in-dax-part-3-of-3-the-finale

    • Anonymous's avatar
      Anonymous
      Not applicable

      Dear amitchandak ,

      The problem is that my data table has a lot of records, the number of distint names is over 200, I can't create each Measure to count each Name, this can be easily handled if using a custom column to store the number for each Name, but I need to use Measure so that the chart can work with Slicer. 

      I can get a list of distinct names, but how do I use the Measure to count the number for each name distinct?

      • amitchandak's avatar
        amitchandak
        Icon for Super User rankSuper User

        Anonymous , You can create a table with a distinct name and join the other table with that. You can always use count distinct from name table

         

        Name = distinct(Table[Name])