Forum Discussion

smpa01's avatar
smpa01
Community Champion
3 years ago
Solved

Ranking issue

AlexisOlson CNENFRNL  I  am trying to create Ranking by using SUBSTITUTEWITHINDEX . It is working as desired in a table expression.   baseTable | name | row | cat | rowCopy | |--------|-...
  • Anonymous's avatar
    Anonymous
    3 years ago

    Hi smpa01 ,

    I updated your sample pbix file(see the attachment), please check if that is what you want. You can create a measure as below to get the rank...

    Measure = 
    VAR tab =
        FILTER (
            ALLSELECTED ( 'wc' ),
            'wc'[Win] <> 0
                && 'wc'[Region] = SELECTEDVALUE ( 'wc'[Region] )
        )
    VAR result =
        SUBSTITUTEWITHINDEX (
            'wc',
            "rank", SUMMARIZE ( tab, 'wc'[Win] ),
            'wc'[Win], DESC
        )
    VAR _rank =
        MAXX ( result, [rank] )
    RETURN
        IF ( ISBLANK ( _rank ), BLANK (), _rank + 1 )

    In addition,  you can achieve the same requirement using RANKX function. Please create a measure as below to get it, it is easier...

    Rank =
    RANKX (
        FILTER ( ALLSELECTED ( 'wc' ), 'wc'[Region] = SELECTEDVALUE ( 'wc'[Region] ) ),
        CALCULATE ( SUM ( 'wc'[Win] ) ),
        ,
        DESC,
        DENSE
    )

    Best Regards

  • AlexisOlson's avatar
    AlexisOlson
    3 years ago

    This feels a bit for efficient since it's iterating over regions instead of every row:

    Table 3 =
    SELECTCOLUMNS (
        GENERATE (
            SUMMARIZE ( wc, wc[Region] ),
            VAR _Region = wc[Region]
            VAR _Partition_ =
                SELECTCOLUMNS ( FILTER ( wc, wc[Region] = _Region ), wc[Country], wc[Win] )
            VAR _AddCol_ =
                ADDCOLUMNS ( _Partition_, "@win", wc[Win] )
            VAR _SubIndex_ =
                SUBSTITUTEWITHINDEX (
                    _AddCol_,
                    "Rank", SUMMARIZE ( _AddCol_, [@win] ),
                    [@win], DESC
                )
            RETURN
                _SubIndex_
        ),
        "Region", wc[Region],
        "Country", wc[Country],
        "Win", wc[Win],
        "Rank", [Rank] + 1
    )