对于排名,是一个老生常谈的问题,有小伙伴问:
如何实现完全顺序排名?
先来看看效果:

这里分别列出了针对 Item 的每个值以及对应的排名。
编写度量值如下:
Item.Rank.Dense =
RANKX( ALLSELECTED( Data[Item] ) , [Item.Value] , , , Dense )注意,多个逗号之间不写内容属于忽略的参数。可以参考此前关于 RANKX 的文章。
编写度量值如下:
Item.Rank.Skip =
RANKX( ALLSELECTED( Data[Item] ) , [Item.Value] , , , Skip )注意,多个逗号之间不写内容属于忽略的参数。可以参考此前关于 RANKX 的文章。
编写度量值如下:
Item.Rank.Order =
VAR vItemIndex = RANKX( ALLSELECTED( Data[Item] ) , [Item] , SELECTEDVALUE( Data[Item] ) )RETURN
RANKX( ALLSELECTED( Data[Item] ) ,
[Item.Value] + RANKX( ALLSELECTED( Data[Item] ) , [Item] ) / 100 ,
[Item.Value] + vItemIndex / 100
)这里的构思技巧在于:
第 5 行,计算每个 Item 的值。
第 6 行,计算每个 Item 的自身的索引并作为一个小值加到值的身上。
第 7 行,用当前元素的值和索引量在排序表中卡位实现计算排名。
在这个方法下,每个元素都不会出现重复的值,因此实现了顺序排名。
RANKX 非常简单,只要你明白了它的本质原理即可。
更多参考:PowerBI DAX RANKX 详解