Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now! Learn more

Reply
jmorav291
Frequent Visitor

How create rank in asymmetric matrix

Hi, community.

 

I'm working on an asymmetric matrix and I need to create one column that shown a dynamic rank. 

I created a measure that returns 3 columns: Information about one week, the second week, and the difference between one and the second week. But I need to know how can I create inside this measure a new column that shown a dynamic ranking and sort data ascending by this ranking column.

Here a sample of that table I created:

jmorav291_0-1611851693479.png

 

Please, I need your help to understand how I can develop the code for ranking inside this measure. Below my code:

 

 

dynamic_table_4 = 
    VAR _index = 
        SELECTEDVALUE(header_test[Index_col], BLANK())
        
    VAR _before_lw = CALCULATE(
        MIN(search_terms_db[week_ix]),
        ALLEXCEPT(search_terms_db,search_terms_db[week])
    )

    VAR _last_week = CALCULATE(
        MAX(search_terms_db[week_ix]),
        ALLEXCEPT(search_terms_db,search_terms_db[week])
    )

    VAR ranking_before_lw = CALCULATE(
        [weekly_ranking],
        search_terms_db[week_ix] = _before_lw
    )

    VAR ranking_last_week = CALCULATE(
        [weekly_ranking],
        search_terms_db[week_ix] = _last_week
    )

    VAR ranking_bw_NotBlank = 
        IF(ranking_before_lw <> 0,
        ranking_before_lw)
    
    VAR ranking_lw_NotBlank = 
        IF(ranking_last_week <> 0,
        ranking_last_week)

    VAR difference = IF(
        OR(
            ranking_before_lw = BLANK(),
            ranking_last_week = BLANK()
        ), 0,
            ranking_bw_NotBlank - ranking_lw_NotBlank
    )

    VAR difference_NotBlank = 
        IF(difference <> 0,
        difference)

    VAR ChangeRanking = difference_NotBlank
    VAR ranking = IF(
        HASONEVALUE(search_terms_db[Search Term]) && (ChangeRanking <> 0),
        VAR SearchTernsRank = 
            ADDCOLUMNS(
                ALLSELECTED(search_terms_db),
                "@SearchRank", RANKX(ALLSELECTED(search_terms_db), search_terms_db[Search Term], ,DESC,Dense)
            )
        VAR MaxSeartTermRank = 
            MAXX(SearchTernsRank, [@SearchRank])
        VAR LookupTable = 
            ADDCOLUMNS(
                SearchTernsRank,
                "@DifferenteRank", difference_NotBlank * MaxSeartTermRank + [@SearchRank]
            )
        VAR CurrentST = SELECTEDVALUE(search_terms_db[Search Term])
        VAR CurrentSTRank = 
            RANKX(ALLSELECTED(search_terms_db), search_terms_db[Search Term], CurrentST, DESC, Dense)
        VAR CurrentValue = ChangeRanking * MaxSeartTermRank + CurrentSTRank
        VAR new_ranking = 
            RANKX(LookupTable, [@DifferenteRank], CurrentValue, , Dense)
        RETURN
            new_ranking
    )

    RETURN

        SWITCH(
            _index,
            -1, IF(NOT ISBLANK(ranking_lw_NotBlank),
            ranking_bw_NotBlank),
            0, IF(NOT ISBLANK(ranking_bw_NotBlank),
            ranking_last_week),
            1,difference_NotBlank,
            2, ranking
        )

 

 

 

1 REPLY 1
lbendlin
Super User
Super User

Remember that a measure is computed for every cell of your visual (including the subtotals and grand totals).  That means you need to recompute the ranking as well, each time, making sure you use the same sort criteria.

Helpful resources

Announcements
November Power BI Update Carousel

Power BI Monthly Update - November 2025

Check out the November 2025 Power BI update to learn about new features.

Fabric Data Days Carousel

Fabric Data Days

Advance your Data & AI career with 50 days of live learning, contests, hands-on challenges, study groups & certifications and more!

FabCon Atlanta 2026 carousel

FabCon Atlanta 2026

Join us at FabCon Atlanta, March 16-20, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.