PowerBI中如何编写度量值实现关联项目状态仅单次累加项目成本
问题原因
你原有的度量值迭代对象是Payment表的每一行,每一行Payment记录都会执行一次cost累加逻辑,因此active状态的项目有多少条Payment记录,对应的cost就会被重复计算多少次。
解决方案
推荐使用度量值实现,无需新增计算表,可适配各类筛选上下文:
项目总金额 = SUMX ( VALUES ( 'Project'[ID] ), -- 迭代当前上下文中的所有不重复项目,保证每个项目仅计算一次 VAR 项目支付总和 = CALCULATE ( SUM ( 'Payment'[Amount] ) ) VAR 项目状态 = SELECTEDVALUE ( 'Project'[Status] ) VAR 项目成本 = SELECTEDVALUE ( 'Project'[Cost] ) RETURN 项目支付总和 + IF ( 项目状态 = "Active", 项目成本, 0 ) )
逻辑说明
- 用
VALUES('Project'[ID])获取当前筛选上下文里的所有不重复项目ID,保证每个项目只参与一次计算 - 对每个项目单独统计关联的Payment金额总和
- 仅当项目状态为Active时,累加一次该项目的cost值
- 最后汇总所有项目的计算结果
效果验证(用你的示例数据)
- 项目1支付总和 = 50+100+200+300 = 650,状态为Active加50,最终项目1总金额为700
- 项目2支付总和 = 50+100 =150,状态为Inactive不加成本,最终项目2总金额为150
- 整体汇总结果为 700+150=850,完全符合需求
前置要求
请确认Project表和Payment表已建立一对多关系,关联键为Project[ID]和Payment[Project]。
内容的提问来源于stack exchange,提问作者Archie
相关产品推荐
相关产品推荐

