前面大概用了两篇,把RANKX排名函数进行了详细的解释和演示,全是偏理论,实际中实用性不强,所以这一篇再来举例排名函数的实际使用案例。突出显示前三名和后三名,动态展示前N条数据,前N%商品销售占比,下面分别演示一下。
【突出显示前/后三名】
这是一个在数据可视化展示中很常用的标记,把做得好的和做得不好的数据突出标记出来。思路很简单,首先计算出排名,然后IF语句判断一下是否小于等于3就行了,最后自定义颜色进行展示即可。
首先计算出每个产品的排名,具体使用方法可参考前面一篇,有详细的解释,DAX语句如下↓
品牌排名 =
RANKX(
ALL('产品表'[品牌]),
[销售金额(万)],,
DESC,
Skip)
然后在写一个颜色判断的语句,如果小于等于3就是绿色,DAX写法如下↓
颜色判断 = IF(
[品牌排名]<=3,
"#91C851",
BLANK()
)
我们可以发现,在颜色判断哪个地方,前三名就是我们自定义的颜色,然后我们只需要把颜色判断这个公式应用到对应的字段,满足条件的前三名就会显示我们自定义的颜色↓
前三名就被我们标记上颜色了,下面还需要把后三名标记成红色,思路是一样的,只是排名的时候按照升序排列就行了,然后在IF判断里面加一层判断就可以了,两个DAX语法如下↓
品牌反向排名 =
RANKX(
ALL('产品表'[品牌]),
[销售金额(万)],,
ASC,
Skip)
颜色判断 = IF(
[品牌排名]<=3,
"#91C851",
IF(
[品牌反向排名]<=3,
"#DB5E5E",
BLANK()
)
)
好了,突出显示前/后三名就完成了,可以根据实际情况更改名次,改一下数字就行了,然后把多余的辅助列删除了就可以了。
【动态展示前N条数据】
下面一个案例是动态展示前N条数据,我们还是以排名销售数量来举例。首先还是要计算出每个品牌的排名情况,然后需要一个动态的辅助列,用来筛选我们需要动态展示前多少名的数据,DAX写法如下↓
前N名数据 =
CALCULATE(
[销售金额(万)],
FILTER(
VALUES('产品表'),
[品牌排名]<=SELECTEDVALUE('动态排名'[排名])
)
)
【前N%商品销售占比】
有的时候我们会关心销售靠前的商品销售占比情况,就可以先求出前面比例的金额,然后根据产品排名来得到所需的占比。我们这里求前30%商品金额的占比情况,DAX写法如下↓
前30%商品金额 =
VAR ProductPercent = DISTINCTCOUNT('产品表'[品牌])*0.3
RETURN
CALCULATE([销售金额(万)],
FILTER(
VALUES('产品表'[品牌]),
RANKX(VALUES('产品表'[品牌]),[销售金额(万)],,DESC)<=ProductPercent
)
)
前30%金额占比 = DIVIDE([前30%商品金额],[销售金额(万)])
当然这里也可以增加一个动态的选择,方法和上面第二个一样,这里就不演示了。