Search code examples
powerbidaxpowerbi-desktop

How to RANK in Visual depending on Slicer


In my Power BI Report I have a table called "Answers" that looks like this:

|Animal  | Viewed |
|Cat     | 17     |
|Chicken | 12     |
|Cow     | 7      |
|Dog     | 28     |
|Goat    | 36     |

I have a slicer on Animal and I need to RANK the Animals by Views in the Visual. So I would need a Measure.
Expected Result:

|Animal  | Viewed | RANK |
|Chicken | 12     | 2    |
|Cow     | 7      | 3    |
|Dog     | 28     | 1    |



Fail 1. The RANK Dense Fuction however did not work:

Rank_fkt = RANKX(ALL(Answers),CALCULATE(MAX(Answers[Viewed])),,DESC,Dense)

|Animal  | Viewed | Rank_fkt |
|Chicken | 12     | 4        |
|Cow     | 7      | 5        |
|Dog     | 28     | 2        |

Fail 2. The RANK AllSELECTED Fuction however did not work either:

Rank_ALL = rankx(ALLSELECTED(Answers[Animal]),CALCULATE(MAX(Answers[Viewed])))

|Animal  | Viewed | Rank_ALL |
|Chicken | 12     | 1        |
|Cow     | 7      | 1        |
|Dog     | 28     | 1        |

Fail 3. My atempt with RANK and Selectedvalue did not work either:

RANK_sel = 
VAR SelectedAnimal = SELECTEDVALUE(Answers[Animal])
RETURN
    RANKX(
        ALL('Answers'),
        CALCULATE(SUM('Answers'[Viewed]), Answers[Animal] = SelectedAnimal),,DESC,Dense
         )

|Animal  | Viewed | Rank_fkt |
|Chicken | 12     | 1        |
|Cow     | 7      | 1        |
|Dog     | 28     | 1        |




Can please someone help me to find the measure that RANKs on the Visual context depending on the slicer, as shown in the Expoected Result.


Solution

  • You can create a Measure as below-

    Rank = 
    CALCULATE(
        COUNTROWS(ALLSELECTED(your_table_name)),
        FILTER(
            ALLSELECTED(your_table_name),
            your_table_name[Viewed] >= MIN(your_table_name[Viewed])
        )
    )
    

    Here is the sample output with order applied on Rank column-

    enter image description here