RANKX 的三种排名方法

PowerBI战友联盟

共 1059字,需浏览 3分钟

 · 2022-06-10

对于排名,是一个老生常谈的问题,有小伙伴问:

如何实现完全顺序排名?

先来看看效果:

这里分别列出了针对 Item 的每个值以及对应的排名。

  • Dense 方法:RANKX 原生支持,称为紧密排名。

  • Skip 方法:RANKX 原生支持,称为稀疏排名。

  • Order 方法:自定义实现,RANKX 无原生支持,称为自定义顺序排名。

Dense 方法

编写度量值如下:

Item.Rank.Dense = 
RANKX( ALLSELECTED( Data[Item] ) , [Item.Value] , , , Dense )

注意,多个逗号之间不写内容属于忽略的参数。可以参考此前关于 RANKX 的文章。

Skip 方法

编写度量值如下:

Item.Rank.Skip = 
RANKX( ALLSELECTED( Data[Item] ) , [Item.Value] , , , Skip )

注意,多个逗号之间不写内容属于忽略的参数。可以参考此前关于 RANKX 的文章。

Order 方法

编写度量值如下:

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 详解


在订阅了BI佐罗讲授的《BI真经》之《BI进行时》课程区,除了可以下载本文案例,还可以观看视频讲解。

Power BI 终极系列课程《BI真经》

BI真经 - 让数据真正成为你的力量

扫码与精英一起讨论 Power BI,验证码:data2022

点击“阅读原文”进入学习中心

浏览 23
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报