专栏名称: PowerBI星球
海量干货,帮你轻松上手 Power BI
目录
相关文章推荐
深焦DeepFocus  ·  在柏林,已经看了23部电影… ·  2 天前  
深焦DeepFocus  ·  年度日本电影总结,现象级女演员出现! ·  昨天  
参考消息  ·  大国重器!探秘“造岛神器”! ·  2 天前  
华人生活网  ·  伊州地毯清洁工4.99美元淘的盘子,竟是中国 ... ·  2 天前  
华人生活网  ·  伊州地毯清洁工4.99美元淘的盘子,竟是中国 ... ·  2 天前  
51好读  ›  专栏  ›  PowerBI星球

Power BI“按列排序”,你中过招吗?

PowerBI星球  · 公众号  ·  · 2024-06-17 11:54

正文

本文分享在PowerBI中按列排序可能会遇到的问题以及解决的办法。


以这样一个 应收明细为例,模拟的每个客户不同账龄的应收余额:



如果想要展示各账龄应收余额占该客户总应收余额的占比,你可能会这样写个度量值:


应收 占比 =
DIVIDE(
SUM('应收明细表'[应收余额]),
CALCULATE(
SUM('应收明细表'[应收余额]) ,
ALL( '应收明细表'[账龄] )
)
)


用PowerBI做一个矩阵,是这样的效果:



看起来计算的结果是正确的,但是列标题上账龄显示的顺序却是错乱的,不是我们想要的按照账期长短的顺序。


这样的问题是不是都遇到过?应该怎么调整为期望的顺序结构呢。


其实只要熟练掌握之前分享过的按列排序技巧就可以解决,参考:


这个小功能可以快速搞定文本排序,很多人却没注意到!


根据按列排序的规则,首先需要为这些账龄添加一个序号列,以方便排序。在不破坏原表结构的情况下,可以新建一个单独的账龄分组表:


关于辅助表的制作,可以参考: Power BI 辅助表制作方式汇总


对这个表的账龄列,按照序号列排序,操作方式如下:



然后将这个表与应收余额表建立关系:



并将矩阵的列标题替换为账龄分组表中的账龄,度量值也调整为账龄分组表的字段

应收 占比 =

DIVIDE(

SUM('应收明细表'[应收余额]),

CALCULATE(

SUM('应收明细表'[应收余额]) ,

ALL( '账龄分组表'[账龄] )

)

)


做完这样的操作以后,发现矩阵变成了这样的:



虽然列标题的顺序对了,但是值却全部变成了100%,这是什么原因呢?



因为对账龄列做按列排序以后,再用这个字段做可视化,上下文就不仅仅是这个字段本身,实际上还隐含了序号列,所以才能将文本按照一定的顺序展示。


既然上下文中隐含的有序号列,在度量值中将序号列也ALL掉就可以了:

应收 占比 =

DIVIDE(

SUM('应收明细表'[应收余额]),

CALCULATE(

SUM('应收明细表'[应收余额]) ,

ALL( '账龄分组表'[账龄] , '账龄分组表'[序号] )

)

)


更省心的做法,为了避免出错,这里也可以直接ALL整个分组表:

应收 占比







请到「今天看啥」查看全文