假设我们有一张销售表

在PowerBi里我们用一个表格来展示它

如果想要显示Top N,可以直接在筛选器里设置:

但是这样的方式很不灵活,如果我们想用切片器控制怎么做呢?

我们新建一个Rank表,用于筛选Top N

新建两个度量值,一个求销量总和,一个生成排名:

总销售量 = SUM('销售表'[销量])

排名 = RANKX(ALL('销售表'[产品]), [总销售量],,DESC,Dense)

我们把排名拖入表格,看看结果是什么

可以看到,Powerbi已经按照销量做了降序的排名了

销量越高的,排名数越小

接着我们写一个度量值用于筛选

TopN = 
VAR N = SELECTEDVALUE('Rank'[Value],3)
RETURN IF(
            [排名] <= N, //判断排名是否在切片器选择范围内
            "显示",
            "隐藏"
)

然后把度量值放入表格的筛选器,选择“显示”,就可以根据切片器来动态显示Top N啦

把排名列拿到,也是能显示的

那么,要显示Bottom N (销量倒数N名,即排名数大的N个) 怎么做呢?

这里要注意一个问题,就是Rankx生成的排名,是计算出来的,不是物理表里的字段,所以我们无法通过DAX获得最大的排名数 (示例中是5)

因此,我们无法用  min < [排名] < max来设定范围去取bottom。(大家可以思考下怎么实现)

换个思路,让排名按照升序排列,

排名 = RANKX(ALL('销售表'[产品]), [总销售量],,ASC,Dense)

其他保持不变,就能显示Bottom N了

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐