Explore and share Fabric Notebooks to boost Power BI insights in the new community notebooks gallery.
Check it out now!Microsoft is giving away 50,000 FREE Microsoft Certification exam vouchers. Get Fabric certified for FREE! Learn more
在PowerBI中,字段的顺序默认是按字母顺序或拼音的顺序来排列的,因此对字段进行排序的结果有可能并不是想要的顺序。那么这时候,可以通过按列排序功能来自定义字段的排序,但需要注意按列排序功能带来的副作用,或者说特性吧。
为方便理解,先来看一个案例:
在这个案例中,想要按月度计算销售金额,并且按月度升序排序。但从上图可以看到,虽然已经对月度进行了升序排序,但是它的值还是“乱序”的。
为了使排序的结果符合预期,可以对月度字段进行按列排序,指定另一个列的值作为它的排序参考值,如下图所示:
此时,回到报表界面,就可以看到排序的结果符合了预期,虽然展示的还是月度字段的值,但排序时将使用按列排序功能所指定的字段,即月份字段的值来进行排序。
按列排序功能本身很简单,相信看了上面的案例之后都能够轻易理解并掌握它的用法,但是有一些注意事项还是需要注意的:
1、各个字段的按列排序字段默认为其本身
2、按列排序默认是升序排序,且不能更改,如果想设置为降序,可以在排序参考字段的值上做文章,比如变成负数等等
3、对于同一个值,其对应的按列排序所指定的排序参考字段的值必须要一致,否则无法设置按列排序,将会报错
4、对于不同的值,其对应的按列排序所指定的排序参考字段的值可以一致
为方便理解,可以类比一下:一个学生某门课的成绩只能有一个,成绩是固定的不可能变来变去,但不同学生在该门课的成绩可以相同,代表大家的成绩排名并列,不分先后。
若对某个字段使用按列排序功能指定了其他字段作为排序参考值,那么此时排序参考字段会绑定到该字段上,当该字段被用作图表的轴字段时,将隐藏式添加排序参考字段的筛选器。
为方便理解,来看一个例子:在之前,已经计算出各月度的销售金额,假设现在想计算各月度的销售金额占总计的百分比,那么首先就要计算出销售金额的总计,如下图所示:
从上图可以看到,计算出的销售金额总计是正确的,但仔细观察,此时的月度字段升序排序后的结果是“乱序”的,即还没有设置按列排序。当对月度字段设置按列排序后,其结果变为:
可以看到,计算出的销售金额总计的值不再是总计,而是当前月度的销售金额。这是因为设置按列排序后,月度作为矩阵的行标题(轴),将隐藏式添加排序参考字段的筛选器,即矩阵中提供的筛选器不仅仅只有月度的筛选器,还有月份的筛选器。虽然在度量值中使用ALL函数移除了月度的筛选器,但还剩下月份的筛选器没有被移除,所以最终计算出来的结果就是各个月度对应的销售金额。
为了在设置了按列排序的情况下仍然得到正确的总计,可以在度量值公式中同时把月度与月份两个字段的筛选器移除掉,如下图所示:
以下是设置按列排序前后的后台查询代码:
以上则是按列排序所带来的副作用了,或者说是特性,毕竟一个Bug如果是可控的,那么也谈不上Bug。
另外,需要注意的是,按列排序所带来的隐藏筛选器只在单个图表中生效,在进行图表交互或作为切片器时,不会将隐藏筛选器传递到其他图表中。如下图所示,将设置了按列排序的月度字段作为切片器,并不会把隐藏的月份筛选器也传递给其他图表。
当遇到默认的排序不符合预期时,可以使用按列排序功能来自定义指定排序参考字段,从而可以控制排序的结果,使其更符合业务或常识的排序。但是,按列排序功能带来的副作用也需要警惕,否则很容易就会出现计算错误,并且因为隐藏式添加的筛选器过于隐蔽,将导致需要花费更多时间去排查问题。
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.