Forum Discussion

hill's avatar
hill
Helper I
5 years ago
Solved

Exclude specific values from top n

Hi all,

I want to calculate the sales of top 5 companies as % of total, alll things worked well, but I found I have name "Others" as a company name. I want to exclude it from the top 5 companies, so the top 5 would only count those with meaningful names, such as Apple or Google. But I also want to keep the data of "Others" in the total number, so I can calculate the concentration ratio of companies. 

 

In this case, simply putting a filter to exclude "Others" is not working.

Here is my current calculation:

 

Top 5 Concentration = DIVIDE(CALCULATE([Sales],topn(5,GROUPBY(data,data[companyname]),[Sales])),CALCULATE([Sales],ALLSELECTED(data[companyname])))
 

Could anyone help? Thanks a lot!

  • hill , Try to create a measure like this and rank/TOPN on that

     

    new sales =calculate([Sales], filter(data, data[companyname] <> "Others"))

  • Please try this expression instead.

     

    Top 5 Concentration =
    DIVIDE (
        CALCULATE (
            [Sales],
            TOPN (
                5,
                FILTER (
                    VALUES ( data[companyname] ),
                    data[companyname] <> "Others"
                ),
                [Sales], DESC
            )
        ),
        CALCULATE (
            [Sales],
            ALLSELECTED ( data[companyname] )
        )
    )

     

    Regards,

    Pat

6 Replies

  • mahoneypat's avatar
    mahoneypat
    Microsoft Employee

    Please try this expression instead.

     

    Top 5 Concentration =
    DIVIDE (
        CALCULATE (
            [Sales],
            TOPN (
                5,
                FILTER (
                    VALUES ( data[companyname] ),
                    data[companyname] <> "Others"
                ),
                [Sales], DESC
            )
        ),
        CALCULATE (
            [Sales],
            ALLSELECTED ( data[companyname] )
        )
    )

     

    Regards,

    Pat

    • hill's avatar
      hill
      Helper I

      Thank you! that is really great

    • hill's avatar
      hill
      Helper I

      Thank you for your reply, but I am afraid that you are not answering my question.

       

      "Others" is a company name, not a remaining part of top 5. Instead, it's part of top 5

      "Others" is the aggregation of all small companies. So it can be very large to be top 1 in the category

      • amitchandak's avatar
        amitchandak
        Super User

        hill , Try to create a measure like this and rank/TOPN on that

         

        new sales =calculate([Sales], filter(data, data[companyname] <> "Others"))