BI技巧丨按列排序
2022-11-11 本文已影响0人
Fabric丨白茶
![](https://img.haomeiwen.com/i19522947/59b5b1c6b611552a.jpg)
PowerBI本身内置的排序方式,是遵循ASCII国际标准的方式,这就导致了中文的默认排序对于很多小伙伴来说并不友好。
常规的解决办法就是新增一列数字列,然后使用“按列排序”功能进行强制排序。
按列排序固然可以解决中文字段的排序问题,但是使用之后,在某些场景下,使用DAX计算,会有一些额外的问题。本期,我们来看一下按列排序功能产生的小问题以及解决方式。
案例数据:
![](https://img.haomeiwen.com/i19522947/7f8cddfae61cca4c.png)
![](https://img.haomeiwen.com/i19522947/0a883f37c3381587.png)
数据比较简单,一张分店的维度信息表,一张销售事实表。
将其导入到PowerBI中,模型关系如下图:
![](https://img.haomeiwen.com/i19522947/bb5dd292c86597e8.png)
问题产生场景:
我们先来构建几个基础指标。
销售数量:
001.Quantity =
SUM ( Fact_Sales[Quantity] )
分组汇总:
002.QuantityForCity =
CALCULATE ( [001.Quantity], ALL ( Dim_Store[StoreName] ) )
分组排序:
003.QuantityRankx =
RANKX ( ALLSELECTED ( Dim_Store[StoreName] ), [001.Quantity] )
将上述的三个指标,拖放到矩阵中,展示效果如下:
![](https://img.haomeiwen.com/i19522947/acf95d73f0835c58.png)
可能小伙伴看到这里会有疑惑,这不是挺正常的么?没看出来哪里不对啊。别急,继续往下看。
![](https://img.haomeiwen.com/i19522947/794d6c455c1631a5.gif)
![](https://img.haomeiwen.com/i19522947/fb31d3edd29171a3.png)
小伙伴们,看懂了么?当StoreName这一列,根据StoreID这一列按列排序后,我们原本的分组计算度量值和分组排名度量值都失效了。
原因:
当我们使用按列排序功能后,原本的字段和排序依据的字段相当于强关联,两个字段具有同等的直接筛选效果。
因此,在涉及到清除上下文筛选时,如果原字段需要被清除筛选,则排序依据列也需要被清除筛选。
解决方案:
将分组汇总和分组排序修改如下。
分组汇总:
004.QuantityForCity =
CALCULATE ( [001.Quantity], ALL ( Dim_Store[StoreName], Dim_Store[StoreID] ) )
分组排序:
005.QuantityRankx =
RANKX (
ALLSELECTED ( Dim_Store[StoreName], Dim_Store[StoreID] ),
[001.Quantity]
)
最终结果如下:
![](https://img.haomeiwen.com/i19522947/24398c8273d1e314.png)
![](https://img.haomeiwen.com/i19522947/7747ee7fb4eebfe8.png)
![](https://img.haomeiwen.com/i19522947/60e85db6a74f7b2a.png)
这里是白茶,一个PowerBI的初学者。
![](https://img.haomeiwen.com/i19522947/a3203a1395b2ec34.png)