DAX问题:SUMMARIZECOLUMNS中无法移除周维度过滤器
DAX查询问题:周销量与年度总销量同值的解决方法
问题现象
你编写的DAX查询中,Sales Quantity Total列未返回指定年份的总销量,反而和Sales Quantity(周销量)值完全相同。移除Datum[Jahr]的筛选后,ALL()函数能正常返回总销量,但需要保留年份筛选。
核心原因
你在SUMMARIZECOLUMNS中同时做了两件事:
- 通过
FILTER('Datum', Datum[Jahr]="2022")添加查询级年份筛选; - 将
Datum[Jahr-Woche]设为分组列,生成行级周筛选。
这两个筛选会形成嵌套上下文:每个分组行的上下文同时包含当前周和年份的筛选。此时用ALL(Datum[Jahr-Woche])仅移除了行级周筛选,但查询级的年份筛选仍会和Datum表中Jahr与Jahr-Woche的依赖关系绑定,导致CALCULATE的上下文仍被限制在当前周,无法计算全年份总销量。
解决方法
方法一:使用ALLEXCEPT保留年份筛选
用ALLEXCEPT(Datum, Datum[Jahr])明确移除Datum表中除年份外的所有筛选,确保计算全年份总销量:
EVALUATE SUMMARIZECOLUMNS( Artikel[ART Artikel], Datum[Jahr-Woche], FILTER(Artikel, Artikel[ART ArtikelNr] = "222834"), FILTER('Datum', Datum[Jahr] = "2022"), "Sales Quantity", [VK Menge], "Sales Quantity Total", CALCULATE([VK Menge], ALLEXCEPT(Datum, Datum[Jahr])) )
方法二:调整年份筛选的位置
将年份筛选从SUMMARIZECOLUMNS的查询级筛选移到CALCULATE的上下文修改中,避免嵌套筛选冲突:
EVALUATE SUMMARIZECOLUMNS( Artikel[ART Artikel], Datum[Jahr-Woche], FILTER(Artikel, Artikel[ART ArtikelNr] = "222834"), "Sales Quantity", [VK Menge], "Sales Quantity Total", CALCULATE([VK Menge], ALL(Datum[Jahr-Woche]), Datum[Jahr] = "2022") )
补充说明
当你移除Datum[Jahr]的筛选后,ALL(Datum[Jahr-Woche])会移除所有周的筛选,此时计算的是所有年份的总销量,这就是为什么它能正常工作,但不符合你需要的年份范围限制。
内容的提问来源于stack exchange,提问作者saso
相关产品推荐
相关产品推荐

