如何在Main Table中创建按Color分组求和的计算列?
解决DAX计算列汇总关联表数据的问题
表结构与需求
Data Table
| Color | Amount |
|---|---|
| Red | 5 |
| Blue | 3 |
| Red | 5 |
| Blue | 6 |
Main Table(目标效果)
| Color | Count |
|---|---|
| Red | 10 |
| Blue | 9 |
| Green | 0 |
需求:在Main Table中创建Count计算列,按Color分组汇总Data Table中对应颜色的Amount总和,已建立Main Table[Color]到Data Table[Color]的一对多关系。
原表达式错误原因
原DAX表达式错误使用RELATED函数:
Count = CALCULATE( SUM(RELATED(DATA_TABLE[Amount])), MAIN_TABLE[Color] = RELATED(DATA_TABLE[Color]) )
RELATED函数仅能在**关系的多端表(子表)**中使用,用于获取一端表(主表)的字段值。当前在一端的Main Table中编写计算列,用RELATED调用多端表的字段,违背了函数的使用规则,因此触发报错。
正确解决方案
方法1:利用关系自动筛选(最简写法)
由于已建立一对多关系,Main Table每行的Color上下文会自动过滤Data Table中对应行,直接使用SUM即可:
Count = SUM(Data Table[Amount])
若需要将无匹配颜色(如Green)的返回值从BLANK()转为0,用COALESCE处理:
Count = COALESCE(SUM(Data Table[Amount]), 0)
方法2:显式指定筛选逻辑(可选)
如果需要明确展示筛选逻辑,也可以用CALCULATE配合字段匹配(因已有关系,此写法属于冗余,但逻辑更直观):
Count = CALCULATE( SUM(Data Table[Amount]), Data Table[Color] = Main Table[Color] )
同样,要返回0的话加上COALESCE:
Count = COALESCE( CALCULATE( SUM(Data Table[Amount]), Data Table[Color] = Main Table[Color] ), 0 )
内容的提问来源于stack exchange,提问作者Cur Fromsky
相关产品推荐
相关产品推荐

