SSAS表格模型中[Önceki Yıl IPP]总计值异常问题咨询
SSAS表格模型中上年同期度量值总计与行和不符的问题解决
在SSAS表格模型中,发现**[Önceki Yıl IPP(上年同期IPP)]**列的总计值与各行数值之和不相等,当前总计结果为98.998。
现有度量值
收入计算度量值
用于计算收入(Amount_)的总和,单位转换为千:
IPP Ciro:=SUM([Amount_])/1000
上年同期收入度量值
用于计算上年同期收入总和,也是当前出现问题的度量值:
Önceki Yıl IPP:=VAR LastDaySelectionIPP =LASTNONBLANK ( Tarih[Tarih], [IPP Ciro] )VAR CurrentRangeIPP =DATESBETWEEN ( Tarih[Tarih], MIN ( Tarih[Tarih] ), LastDaySelectionIPP )VAR PreviousRange =SAMEPERIODLASTYEAR ( CurrentRangeIPP )RETURNIF (LastDaySelectionIPP >= MIN ( Tarih[Tarih] ),CALCULATE ( [IPP Ciro], PreviousRange ))
问题原因
当前度量值的总计行计算逻辑与行级别不同:
- 行级别基于当前行的日期范围,计算对应上年同期的收入
- 总计行则取整个筛选范围内的最小日期和最后一个有数据的日期,计算该全局区间的上年同期收入,而非对各行结果进行累加
解决方案
修改度量值,使用SUMX迭代行上下文,逐个计算每行的上年同期值后累加,让总计值等于各行结果之和:
替换为以下DAX代码(需根据报表分组维度调整VALUES中的列):
Önceki Yıl IPP:=SUMX( VALUES(你的分组维度列), -- 替换为报表中用于分组的列,如产品、类别或日期分组列 VAR LastDaySelectionIPP = LASTNONBLANK ( Tarih[Tarih], [IPP Ciro] ) VAR CurrentRangeIPP = DATESBETWEEN ( Tarih[Tarih], MIN ( Tarih[Tarih] ), LastDaySelectionIPP ) VAR PreviousRange = SAMEPERIODLASTYEAR ( CurrentRangeIPP ) RETURN IF ( LastDaySelectionIPP >= MIN ( Tarih[Tarih] ), CALCULATE ( [IPP Ciro], PreviousRange ) ) )
代码说明
SUMX会遍历指定分组的每一行,计算该行对应的上年同期收入- 最终将所有行的计算结果求和,确保总计行是各行数值的累加,与行级别计算逻辑保持一致
内容的提问来源于stack exchange,提问作者turgay esen
相关产品推荐
相关产品推荐

