按年计算平均单位成本的Measure返回异常值,求解决方法
解决DAX年度平均单位成本计算问题
问题核心
你的Sum(Cost)/DistinctCount(Items)度量值失效的原因是:DistinctCount(Items)统计的是全量唯一物品总数(13件),没有被年份上下文筛选——因为物品表(Items)未与日期表/采购事实表建立正确的筛选关联,导致年份筛选无法传递到Items表。
解决方案
方法1:修正数据模型关联
- 确保采购事实表(包含
Cost、采购日期、ItemID的核心业务表)同时关联:- 日期表(用于年份维度筛选)
- 物品表(Items,仅用于关联物品属性,不要直接用于计数)
- 所有筛选逻辑通过事实表传递,确保年份上下文能过滤到当年的采购记录。
方法2:修改DAX度量值
替换原度量值为基于采购事实表的计算:
年度平均单位成本 = DIVIDE( SUM('采购事实表'[Cost]), DISTINCTCOUNT('采购事实表'[ItemID]), BLANK() )
- 逻辑说明:年份上下文会先过滤事实表中当年的所有采购行,
DISTINCTCOUNT('采购事实表'[ItemID])会统计当年采购的唯一物品数量,而非全量13件。对应你提到的案例,会计算350/5=70,符合预期。 - 额外调整:若需统计当年采购总件数(含同一件物品多次采购的情况),将
DISTINCTCOUNT替换为COUNT('采购事实表'[ItemID])即可。
关键注意事项
- 优先使用
DIVIDE函数替代直接除法,避免分母为0时出现计算错误。 - 不要直接在物品主表(Items)上做计数,必须基于事实表的关联字段,才能继承上下文筛选。
内容的提问来源于stack exchange,提问作者Alex M
相关产品推荐
相关产品推荐

