回忆是一座桥
却是通往寂寞的牢

PowerBI按列排序的应用与副作用

在PowerBI中,字段的顺序默认是按字母顺序或拼音的顺序来排列的,因此对字段进行排序的结果有可能并不是想要的顺序。那么这时候,可以通过按列排序功能来自定义字段的排序,但需要注意按列排序功能带来的副作用,或者说特性吧。

按列排序的使用

为方便理解,先来看一个案例:

在这个案例中,想要按月度计算销售金额,并且按月度升序排序。但从上图可以看到,虽然已经对月度进行了升序排序,但是它的值还是“乱序”的。

为了使排序的结果符合预期,可以对月度字段进行按列排序,指定另一个列的值作为它的排序参考值,如下图所示:

此时,回到报表界面,就可以看到排序的结果符合了预期,虽然展示的还是月度字段的值,但排序时将使用按列排序功能所指定的字段,即月份字段的值来进行排序。

按列排序功能本身很简单,相信看了上面的案例之后都能够轻易理解并掌握它的用法,但是有一些注意事项还是需要注意的:

1、各个字段的按列排序字段默认为其本身

2、按列排序默认是升序排序,且不能更改,如果想设置为降序,可以在排序参考字段的值上做文章,比如变成负数等等

3、对于同一个值,其对应的按列排序所指定的排序参考字段的值必须要一致,否则无法设置按列排序,将会报错

4、对于不同的值,其对应的按列排序所指定的排序参考字段的值可以一致

为方便理解,可以类比一下:一个学生某门课的成绩只能有一个,成绩是固定的不可能变来变去,但不同学生在该门课的成绩可以相同,代表大家的成绩排名并列,不分先后。

按列排序的副作用

若对某个字段使用按列排序功能指定了其他字段作为排序参考值,那么此时排序参考字段会绑定到该字段上,当该字段被用作图表的轴字段时,将隐藏式添加排序参考字段的筛选器。

为方便理解,来看一个例子:在之前,已经计算出各月度的销售金额,假设现在想计算各月度的销售金额占总计的百分比,那么首先就要计算出销售金额的总计,如下图所示:

从上图可以看到,计算出的销售金额总计是正确的,但仔细观察,此时的月度字段升序排序后的结果是“乱序”的,即还没有设置按列排序。当对月度字段设置按列排序后,其结果变为:

可以看到,计算出的销售金额总计的值不再是总计,而是当前月度的销售金额。这是因为设置按列排序后,月度作为矩阵的行标题(轴),将隐藏式添加排序参考字段的筛选器,即矩阵中提供的筛选器不仅仅只有月度的筛选器,还有月份的筛选器。虽然在度量值中使用ALL函数移除了月度的筛选器,但还剩下月份的筛选器没有被移除,所以最终计算出来的结果就是各个月度对应的销售金额。

为了在设置了按列排序的情况下仍然得到正确的总计,可以在度量值公式中同时把月度与月份两个字段的筛选器移除掉,如下图所示:

以下是设置按列排序前后的后台查询代码:

以上则是按列排序所带来的副作用了,或者说是特性,毕竟一个Bug如果是可控的,那么也谈不上Bug。

另外,需要注意的是,按列排序所带来的隐藏筛选器只在单个图表中生效,在进行图表交互或作为切片器时,不会将隐藏筛选器传递到其他图表中。如下图所示,将设置了按列排序的月度字段作为切片器,并不会把隐藏的月份筛选器也传递给其他图表。

总结

当遇到默认的排序不符合预期时,可以使用按列排序功能来自定义指定排序参考字段,从而可以控制排序的结果,使其更符合业务或常识的排序。但是,按列排序功能带来的副作用也需要警惕,否则很容易就会出现计算错误,并且因为隐藏式添加的筛选器过于隐蔽,将导致需要花费更多时间去排查问题。

未经允许不得转载:夕枫 » PowerBI按列排序的应用与副作用
订阅评论
提醒
guest
0 评论
内联反馈
查看所有评论