You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerBI总计错误:寻求替代MAX函数的DAX解决方案

关于DAX度量值总计错误的解决方案探讨

我有两段可正常运行的DAX代码:

Current Week Amt = 
VAR CurrentFiscalWeek = MAX( 'DF'[Fiscal Week num] )
RETURN
CALCULATE(
     [Measure],
    'DF'[Fiscal Week num] = CurrentFiscalWeek
)

Current Week Amt_2 = 
SUMX(
    SUMMARIZE('DF', 'DF'[Source], 
              "fixed" ,[Current Week Amt]),
              
              [fixed])

第一段代码无法得出正确总计,原因是各条目的Fiscal Week num不同,数据示例如下:

Source    Fiscal Week num
    Company A       52
    Company B       49
    Company C       48

目前我通过Current Week Amt_2针对每个表格修正了总计,但想了解是否可以通过将VAR定义改为VAR CurrentFiscalWeek = MAX( 'Inventory'[Fiscal Week num] )来让表格总计正确?


解答

核心问题在于原Current Week Amt中,MAX('DF'[Fiscal Week num])在总计行计算的是整个DF表的最大周数,而非按Source分组后的单组周数,导致总计逻辑错误。

针对你提到的替换思路,分两种情况判断:

  • 如果Inventory表存的是全局统一的当前周:比如整个报表需要固定展示某一周的数据,那替换为MAX('Inventory'[Fiscal Week num])完全可行。此时度量值会用全局统一的周数筛选所有Source的数据,行级和总计都会直接计算该周的数值总和,无需额外的SUMX+SUMMARIZE逻辑。
  • 如果Inventory表的周数和DF表是按Source关联的:那替换后问题依旧,因为总计行的MAX('Inventory'[Fiscal Week num])还是会取全局最大值,无法实现按组取周数的需求。

你的Current Week Amt_2之所以能得到正确总计,是因为SUMMARIZE按Source分组后,每个分组内计算Current Week Amt时,MAX('DF'[Fiscal Week num])取的是该分组自身的周数,再通过SUMX汇总分组结果,这是分组计算后求和的正确逻辑。

如果想简化写法,也可以把逻辑整合到一个度量值里:

Current Week Amt = 
SUMX(
    VALUES('DF'[Source]),
    CALCULATE(
        [Measure],
        'DF'[Fiscal Week num] = MAX('DF'[Fiscal Week num])
    )
)

内容的提问来源于stack exchange,提问作者symkly

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 10:10:02