BI技巧丨按列排序

PowerBI本身内置的排序方式,是遵循ASCII国际标准的方式,这就导致了中文的默认排序对于很多小伙伴来说并不友好。
常规的解决办法就是新增一列数字列,然后使用**“按列排序”**功能进行强制排序。
按列排序固然可以解决中文字段的排序问题,但是使用之后,在某些场景下,使用DAX计算,会有一些额外的问题。本期,我们来看一下按列排序功能产生的小问题以及解决方式。

案例数据:

数据比较简单,一张分店的维度信息表,一张销售事实表。
将其导入到PowerBI中,模型关系如下图:

问题产生场景:
我们先来构建几个基础指标。
销售数量:

001.Quantity = 
SUM ( Fact_Sales[Quantity] )

分组汇总:

002.QuantityForCity = 
CALCULATE ( [001.Quantity], ALL ( Dim_Store[StoreName] ) )

分组排序:

003.QuantityRankx = 
RANKX ( ALLSELECTED ( Dim_Store[StoreName] ), [001.Quantity] )

将上述的三个指标,拖放到矩阵中,展示效果如下:

可能小伙伴看到这里会有疑惑,这不是挺正常的么?没看出来哪里不对啊。别急,继续往下看。


小伙伴们,看懂了么?当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]
)

最终结果如下:

这里是白茶,一个PowerBI的初学者。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fabric丨白茶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值