专栏名称: PowerBI战友联盟
微软 Power BI MVP BI佐罗 带你学习BI真经。
目录
相关文章推荐
江西宣传  ·  0℃!江西降温就在...... ·  19 小时前  
上饶晚报  ·  今日17时1分,上饶正式进入…… ·  2 天前  
上饶新闻  ·  拟正式推荐对象公示 ·  3 天前  
江西文旅发布  ·  今日春分 |  春色满园关不住,正是赣鄱好时节 ·  3 天前  
江西文旅发布  ·  今日春分 |  春色满园关不住,正是赣鄱好时节 ·  3 天前  
51好读  ›  专栏  ›  PowerBI战友联盟

PowerBI 按列排序功能的“副作用”,你知道吗?

PowerBI战友联盟  · 公众号  ·  · 2025-01-09 12:10

正文

欢迎关注 【BI佐罗数据分析】 ,今日精华包括:视频案例,技巧干货。

↓ 预约直播,更多干货,不要错过 ↓

什么是按列排序

按列排序功能允许使用另一列的值来对当前列进行排序。例如,想按月份的自然顺序(如一月、二月、三月)显示数据,而不是按字母顺序排序,可以将月份名称列的排序依据设置为月份序号列,这能确保数据显示的顺序符合业务逻辑。

DAX 查询中的列排序规则

在 Power BI 中,DAX 查询没有默认的列排序规则,必须使用 ORDER BY 明确指定。如果列设置了“按列排序”,DAX 查询会同时包含用于显示的列(如“月份名称”)和排序依据的列(如“月份序号”)。

例如,在 Power BI 中一个包含月份名称(已经按列排序)和销售额的表,其 DAX 查询如下:

即使报表中只显示 月份名称 ,查询仍包含 月份序号 以确保正确排序。

按列排序的“副作用”

当 DAX 查询同时包含用于显示的列和排序依据的列时,可能会对筛选上下文和度量值的结果产生影响。

例如,如果报表同时包含月份名称和月份序号,筛选上下文可能会影响度量值的计算结果。比如我们要计算月份销售额最大值,那么对应的度量值如下。

月份销售额最大值 = MAXXALL( 'Dim Calendar'[MonthNameCN] ) , [Sales] )

添加到表上时,发现计算错误。

这是因为筛选上下文包含了月份序号列,度量值未移除与排序相关的筛选上下文。

将度量值修改一下,移除排序列的筛选上下文。

月份销售额最大值 = MAXXALL( 'Dim Calendar'[MonthNameCN] , 'Dim Calendar'[MonthNum] ) , [Sales] )

此时发现计算正确。

所以我们在移除进行过按列排序操作列的筛选上下文时,要注意不仅只有报表中使用的列的筛选上下文要移除,它所依靠的排序列的筛选上下文也要移除,这样才能计算正确。







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