Power BI DAX 分组排名 分层排名

DAX中通常使用迭代函数Rankx,我们首先了解一下Rankx的基础用法:

1.Rankx基本方法

基础数据
基础数据如上图

首先建立【度量值】——[销售和]

销量和 = SUM('销量明细'[销量])

再使用Rankx计算排名,新建【度量值】

总体排名 = RANKX(
            	ALL('销量明细'),
            	[销量和]
        		)

在这里插入图片描述

如上例,Rankx只有前两个参数是必要的,实际可以输入五个参数,设置排序方式

  • 参数1:与其他迭代函数一样是表,添加ALL函数是因为需要通过行上下文计算排名,
  • 参数2:需要是一个已经建立好的度量值
  • 参数3:一般忽略
  • 参数4:指定排序方式,ASC升序,DESC降序
  • 参数5:处理排名一致时排名规则,skip 下一名的排序等于之前所有排序的数量+1;dense ,只累加排序,不考虑数量。

2.分组排名度量值

通过在第一个参数添加函数可以实现进阶功能,例如分组分层排名,依旧使用上述数据,新建【度量值】


按类别排名 = RANKX(
                   ALLEXCEPT('销量明细','销量明细'[类别]),
                   [销量和]
           		 )

上述DAX公式使用的是ALLEXCEPT函数,是ALL家族函数,功能是除了第二个参数【类别】都是行上下文计算排名,这样就实现了分组分层排名

3.添加分组排名计算列

新建【计算列】

按类别排名_列 = VAR _C = '销量明细'[类别]
			RETURN RANKX(
			            FILTER('销量明细',
			                    '销量明细'[类别]=_C
			                    ),
			                    [销量]
			            )

在这里插入图片描述
这个DAX公式采取类似Excel行上下文的功能,首先建立一个参数等于类别,在Rankx函数第一个参数添加一个Filter,实现同一类别内进行排名,即分层排名。

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值