Excel关联3张表的透视表按类别计算员工容量的DAX表达式问题
问题原因
你当前使用的SUMX(Rates;Rates[Req. Capacity])没有将员工、项目、费率三张表的关联维度传递到Rates表的筛选逻辑中,只会返回当前筛选上下文下所有符合条件的Req. Capacity总和,因此同角色的员工会拿到完全相同的数值。
解决步骤
1. 配置表关联(推荐)
先在数据模型中建立三张表的物理关联:
- 将Workers per Project表的项目ID字段,与Projects表的项目ID字段建立一对多关联
- 将Projects表的项目类型、项目阶段字段,和Workers per Project表的角色字段,分别与Rates表对应的同名字段建立关联,关联方向设置为单方向从维度表流向事实表即可。
完成关联后直接使用如下度量值就能得到正确结果:
所需员工容量 = SUM(Rates[Req. Capacity])
透视表行维度带上员工标识、所属项目字段后,筛选上下文会顺着关联自动过滤Rates表,返回每个员工对应角色、所属项目类型、项目阶段匹配的容量值。
2. 无物理关联写法
如果不想新增物理关联避免模型冲突,可以直接使用如下度量值,手动匹配维度过滤:
所需员工容量 = VAR 当前员工匹配维度 = SUMMARIZE( 'Workers per Project', 'Workers per Project'[角色], Projects[项目类型], Projects[项目阶段] ) RETURN CALCULATE( SUM(Rates[Req. Capacity]), TREATAS(当前员工匹配维度, Rates[角色], Rates[项目类型], Rates[项目阶段]) )
注:如果你的DAX环境使用分号作为参数分隔符,把上述公式里的逗号替换为分号即可。
内容的提问来源于stack exchange,提问作者Eduardo Massieu
相关产品推荐
相关产品推荐

