PowerBI实用技巧:案例三(动态参数筛选控制排名的展示——DAX RANKX)

时间:2024-04-01 20:39:11

       其实现在网上面已经有很多的文章教程 教大家如果通过RANKX函数对数据进行排序,包括使用TOPN来控制名次的展示。但是最近有一个新的需求是需要通过参数筛选来控制排名的展示。其实原理跟正常的排序是一样的。下面我梳理一下实现的步骤,再具体讲解为什么这么实现,方便理解。

先看下一下效果图:

PowerBI实用技巧:案例三(动态参数筛选控制排名的展示——DAX RANKX)

第一步:新建参数

这里需要注意的是DATA TYPE,因为我的需求是排名,排名都是整数不可能为小数点。所以这里我选择whole number. Increment这里面讲上一个参数和下一个参数之间的间距,我这边就是默认的每次增加1。例:1.2.3.4.5.6。default是指当我没有选择时,默认展示什么,就是字面的含义。

PowerBI实用技巧:案例三(动态参数筛选控制排名的展示——DAX RANKX)

 执行后就会出现如下的表数据。TOP TABLE VALUE:TOP TABLE Value = SELECTEDVALUE('TOP TABLE'[TOP TABLE], 3)。这边的这个3,就是在新建时我在Default里面写入的。默认的是:SELECTEDVALUE('Parameter'[Parameter]),SELECTVALUE第二个参数是没有填入值的。

PowerBI实用技巧:案例三(动态参数筛选控制排名的展示——DAX RANKX)

第二步,创建排序

 RANK = IF(HASONEVALUE(VALUE1),RANKX(ALL(VALUE2),VALUE3))

 VALUE1:从数据库的角度理解就是按哪个维度进行分组排序,GROUP BY VALUE1,例如我想把销售金额按城市进行排序,那这里的VALUE1就可以填'城市'

去掉无意义的汇总内容,直接用IF+HASONEVALUE进行判断就行了,本文后面的度量值都不再考虑总计问题,并且直接不再显示总计。

VALUE2:ALL这个函数大家都不陌生,具体不懂的,我之前的文章就写过,并把官网链接也复制在上面了。这里面也是填写维度'城市'

VALUE3:汇总的度量值,例销售金额

第三步:判断参数和排序之间的关系

TopN_GMV =

VAR SelectedTop =

SELECTEDVALUE ( '参数名' )

RETURN

SWITCH (

TRUE (),

SelectedTop = 0,VALUE3,

[RANK] <= SelectedTop,VALUE3 )

 

完成~~~~~