首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >RANKX 的三种排名方法

RANKX 的三种排名方法

作者头像
BI佐罗
发布2022-07-07 15:44:43
发布2022-07-07 15:44:43
1.1K0
举报
文章被收录于专栏:PowerBI战友联盟PowerBI战友联盟

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

如何实现完全顺序排名?

先来看看效果:

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

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

Dense 方法

编写度量值如下:

代码语言:javascript
复制
Item.Rank.Dense = 
RANKX( ALLSELECTED( Data[Item] ) , [Item.Value] , , , Dense )

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

Skip 方法

编写度量值如下:

代码语言:javascript
复制
Item.Rank.Skip = 
RANKX( ALLSELECTED( Data[Item] ) , [Item.Value] , , , Skip )

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

Order 方法

编写度量值如下:

代码语言:javascript
复制
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 详解

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-06-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 PowerBI战友联盟 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Dense 方法
  • Skip 方法
  • Order 方法
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档