102_Power Pivot DAX 排名后加上总排名数

焦棚子 2020-02-2921:23:231 3,7324字数 1240阅读4分8秒阅读模式

焦棚子的文章目录

请在文末下载附件

1、背景

每次写rank的时候,有了排名就可以了,排名1,2,3,4,5这样不是很清晰吗?但是中国式报表的老板们说你能不能在排名后面加一个总排名数呢,就像1/5,2/5,3/5,4/5,5/5。谁叫是老板呢,于是就有了报表加工出来后各种组合,比如vlookup。既然都用了dax,为什么不能dax呢。

那就dax写一写咯,

2、数据源(上图)

102_Power Pivot DAX 排名后加上总排名数

3、效果未切片 (再上图)

102_Power Pivot DAX 排名后加上总排名数

4、效果加上切片 请注意R1和R2的变化,很重要。(接着上图)

102_Power Pivot DAX 排名后加上总排名数

5、接下来一如既往的贴上dax咯。

total:=SUM(data[value])

R1:=IF (
    HASONEVALUE ( data[部门] ),
    VAR P =
        SUMMARIZE ( ALL ( 'data' ), 'data'[部门], "P", 'data'[total] )
    RETURN
        RANKX ( P, 'data'[total], 'data'[total], DESC, DENSE ),
    BLANK ()
)
102_Power Pivot DAX 排名后加上总排名数

 

R1/M:=IF (
    HASONEVALUE ( data[部门] ),
    VAR P =
        SUMMARIZE ( ALL ( 'data' ), 'data'[部门], "P", 'data'[total] )
    VAR M =
        CALCULATE ( DISTINCTCOUNT ( data[部门] ), ALL ( data[部门] ) )
    VAR R =
        RANKX ( P, 'data'[total], 'data'[total], DESC, DENSE )
    RETURN
        CONCATENATE ( R, "/" & M ),
    BLANK ()
)

102_Power Pivot DAX 排名后加上总排名数

R2:=IF (
    HASONEVALUE ( data[部门] ),
    VAR P =
        SUMMARIZE ( ALLSELECTED ( 'data' ), 'data'[部门], "P", 'data'[total] )
    RETURN
        RANKX ( P, 'data'[total], 'data'[total], DESC, DENSE ),
    BLANK ()
)

102_Power Pivot DAX 排名后加上总排名数

R2/M:=IF (
    HASONEVALUE ( data[部门] ),
    VAR P =
        SUMMARIZE ( ALLSELECTED ( 'data' ), 'data'[部门], "P", 'data'[total] )
    VAR M =
        CALCULATE ( DISTINCTCOUNT ( data[部门] ), ALLSELECTED ( data[部门] ) )
    VAR R =
        RANKX ( P, 'data'[total], 'data'[total], DESC, DENSE )
    RETURN
        CONCATENATE ( R, "/" & M ),
    BLANK ()
)

102_Power Pivot DAX 排名后加上总排名数

 

6、小结下

请注意观察R1和R2的变化,其实就是all和allselected的变化。

在不同的上下文的筛选下,会得到不同的结果,all则排名始终在所有排名中作排名,allselected则是选择的排名中排名。

关于allselected请移步官方文档:

ALLSELECTED 函数 (DAX)

by 焦棚子

焦棚子的文章目录

 

请点击【立即购买】或者【升级VIP获得案例附件。

隐藏内容需要支付:¥1
立即购买 升级VIP

焦棚子
  • 除非特殊声明,本站文章均为焦棚子原创,转载请务必保留本文链接!
  • 《102_Power Pivot DAX 排名后加上总排名数》链接:https://jiaopengzi.com/108.html