多种 DAX 方法计算 TOP1 的值

涉及排名或做排行榜的时候,我们需要和No.1的值做比较,来查看差距。比如业务员比较销售业绩的时候,将其他业务员的业绩与销售冠军进行比较;在市场占有率上,挑战者与主导者的市场份额比较;学分排名上,其他学员的成绩和第一名的成绩进行比较等等,需要确定TOP1的值,接下来用多种方式计算TOP1的值。

场景是房产销售业绩排行比较。销售表记录了销售员销售多种户型的销售额记录,新建一个销售员表与销售表的销售员进行关联。

第一种方式

用MAXX迭代函数计算销售员里销售额最大的值。

TOP1_v1 =
MAXX ( ALL ( '销售员' ), '销售表'[销售额(万元)] )

第二种方式

用TOPN函数和CALCULATE结合计算。

TOP1_v2 =
CALCULATE ( '销售表'[销售额(万元)], 
TOPN ( 1,ALL ( '销售员' ), '销售表'[销售额(万元)] ))

第三种方式

用summarize新建一个聚合表,相当于对销售表按销售员进行聚合透视。
直接用MAX取聚合表的最大值即是销售员TOP1的销售记录。

聚合表 =
SUMMARIZE ( '销售表', '销售员'[销售员], "销售额", '销售表'[销售额(万元)] )
TOP1_v3 =
MAX ( '聚合表'[销售额] )

接下来的两种方式看起来比较麻烦,不过这两种方式旨在熟悉一下其他函数的用法。

第四种方式

在聚合表里新建计算列,用rank.eq计算出排名第一的就是No.1的值。

销售额排名 =
RANK.EQ ( '聚合表'[销售额], '聚合表'[销售额] )
TOP1_V4 =
CALCULATE ( SUM( '聚合表'[销售额] ), '聚合表'[销售额排名] = 1 )

第五种方式

在做帕累托图的时候,需要计算出累计百分比,销售员中累计百分比最小的销售记录就是No.1的值,按这个思路来计算TOP1的值。

销售额累计占比 =
CALCULATE (
    SUM ( '聚合表'[销售额] ),
    FILTER ( '聚合表', '聚合表'[销售额] >= EARLIER ( '聚合表'[销售额] ) )
)
    / SUM ( '聚合表'[销售额] )
销售额累计占比排名 =
RANK.EQ ( '聚合表'[销售额累计占比], '聚合表'[销售额累计占比], ASC )

销售额累计占比排名按升序排序,最小排名就是最大值。

TOP1_v5 =
CALCULATE ( SUM( '聚合表'[销售额] ), '聚合表'[销售额累计占比排名]= 1 )

file

以上就是5种计算TOP1值的方法。有了标杆值,计算出销售额相对占比即销售员销售额占No.1的比例,查看相对差距。

销售额相对占比 =
IF (
    ISFILTERED ( '销售员'[销售员] ),
    DIVIDE ( '销售表'[销售额(万元)], '销售表'[TOP1_v1] ),
    BLANK ()
)

file

用slim data bar可视化销售员业绩排行,可以看到销售员与No.1的差距。
由于目标和相对占比无法在一张图里展示,下图是两张slim data bar拼接而成。

file

以上就是处理排行中与No.1进行比较的方法,希望对大家有所帮助。

file



* PowerPivot工坊原创文章,转载请注明出处!


如果您想深入学习微软Power BI,欢迎登录网易云课堂试听学习我们的“从Excel到Power BI数据分析可视化”系列课程。或者关注我们的公众号(PowerPivot工坊)后猛戳”在线学习”。


长按下方二维码关注“Power Pivot工坊”获取更多微软Power BI、PowerPivot相关文章、资讯,欢迎小伙伴儿们转发分享~

Power Pivot工坊