继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

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

焦棚子
关注TA
已关注
手记 47
粉丝 3
获赞 2

1、背景

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

那就dax写一写咯,

2、数据源(上图)

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

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

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 ()
)

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 ()
)

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

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 ()
)

6、小结下

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

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

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP