求助:使用DAX基于多张数据表创建ID维度合计列
解决Power BI多表按ID汇总总成本的方案
针对你需要在主表中新增TotalCost列,汇总5张关联数据表中对应ID总成本的需求,直接通过分别计算每张表的对应ID成本再求和即可,具体DAX实现方案如下:
方法一:使用SUMX + RELATEDTABLE
TotalCost = SUMX(RELATEDTABLE('数据表1'), '数据表1'[Cost]) + SUMX(RELATEDTABLE('数据表2'), '数据表2'[Cost]) + SUMX(RELATEDTABLE('数据表3'), '数据表3'[Cost]) + SUMX(RELATEDTABLE('数据表4'), '数据表4'[Cost]) + SUMX(RELATEDTABLE('数据表5'), '数据表5'[Cost])
RELATEDTABLE('数据表X')会依托主表与子表的ID关联关系,返回当前主表行对应的子表所有记录(即该ID在对应数据表的成本条目)- SUMX迭代这些记录并对
Cost字段求和,最后将5张表的求和结果累加,得到该ID的总成本
方法二:使用CALCULATE + SUM(更简洁)
TotalCost = CALCULATE(SUM('数据表1'[Cost])) + CALCULATE(SUM('数据表2'[Cost])) + CALCULATE(SUM('数据表3'[Cost])) + CALCULATE(SUM('数据表4'[Cost])) + CALCULATE(SUM('数据表5'[Cost]))
- 由于主表与每张数据表已通过ID建立一对多关联,CALCULATE会自动用当前主表行的ID筛选对应数据表的记录,SUM即可得到该ID在对应表的成本总和,最后累加所有表的结果
示例验证
以你给出的场景为例:
- 主表ID02对应的数据表1中Cost为20,数据表2中Cost为20
- 代入公式后,
TotalCost会计算为20+20=40,完全符合预期
内容的提问来源于stack exchange,提问作者David T
相关产品推荐
相关产品推荐

