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
相关产品推荐
相关产品推荐

