Power BI计算成本变动加权平均值不随月份更新问题求助
问题根因排查及修复方案
核心问题定位
加权平均值不随月份变动,本质是DAX的上下文筛选和计算对象属性不匹配导致的,常见原因有三类:
- 「期末库存」是计算列而非度量值:计算列在数据刷新时就固定了每行的结果,不会响应页面上的月份筛选器,导致Sum Product和分母都是全周期的固定值
- CALCULATE没有限定时间上下文:当前的CALCULATE未明确保留时间筛选,若模型存在多表关联的筛选传递异常,会默认计算全量数据的汇总值
- 分母「Closing Stock」没有按月份聚合:如果分母直接取单行列值而非当前月份的库存汇总,也会导致比值固定
修复步骤
第一步:将期末库存调整为度量值
原公式调整为:
Closing Stock = CALCULATE( SUM(Table1[movement]) + SUM(Table1[sale]) + SUM(Table1[sale return]), ALLEXCEPT(Table1, Table1[产品ID], '日期表'[日期]) -- 可根据实际业务维度修改,仅保留需要的产品、时间等筛选维度 )
注意:必须先建立独立的日期维度表,且和Table1的日期字段建立一对多关联,否则月份筛选无法正常生效
第二步:调整Sum Product度量值
Sum Product = SUMX( VALUES('日期表'[年月]), -- 按年月迭代计算每个月的成本*库存 [Closing Stock] * CALCULATE(AVERAGE(Table1[cost]) + SUM(Table1[cost change])) -- 已默认纳入cost change字段的成本变动影响,可根据实际规则调整 )
第三步:调整加权平均度量值
WA = DIVIDE( [Sum Product], CALCULATE([Closing Stock], ALLSELECTED('日期表'[年月])) -- 分母取当前筛选范围内的总库存 )
补充说明及验证
- 若需要实现每日/每笔入库后自动更新的滚动移动加权平均,把
VALUES('日期表'[年月])改为VALUES('日期表'[日期])即可 - 验证时把年月字段和WA度量值同时放到表格视觉对象中,调整月份筛选器,确认不同月份的WA值随筛选变化即可
内容的提问来源于stack exchange,提问作者zain qazi
相关产品推荐
相关产品推荐

