使用MIN函数的DAX列总计结果不符合预期问题求助
Power BI DAX总计错误修复方案
原始数据
| 姓名 | 类别 | 物品 | 金额 |
|---|---|---|---|
| Gary | food | rice | 1 |
| Gary | food | sugar | 5 |
| Gary | furniture | chair | 8 |
| Gary | furniture | table | 4 |
| John | food | rice | 3 |
| John | food | sugar | 5 |
| John | furniture | chair | 6 |
| John | furniture | table | 7 |
期望输出
| 姓名 | 食品 | 家具 | 总计 |
|---|---|---|---|
| Gary | 12 | 36 | 48 |
| John | 16 | 39 | 55 |
当前问题
使用以下DAX公式计算食品、家具金额时,列总计结果显示为36和42,不符合预期:
SWITCH( TRUE(), MIN(Sheet1[Category]) = "Food", SUM(Sheet1[Amount]) * 2, MIN(Sheet1[Category]) = "Furniture", SUM(Sheet1[Amount]) * 3 )
需求为:按人员姓名分组,将Food类别金额总和乘以2,Furniture类别金额总和乘以3。
问题原因
原公式用MIN(Sheet1[Category])判断类别,在总计行上下文里,MIN会返回整个Category列的最小值(即"Food"),导致总计行仅计算所有金额总和乘以2,而非分别计算Food和Furniture类别的加权值再求和,因此结果错误。
正确解决方案
1. 分别创建食品、家具度量值
创建食品度量值:
食品 = SUMX(FILTER(Sheet1, Sheet1[Category] = "food"), Sheet1[Amount]) * 2
创建家具度量值:
家具 = SUMX(FILTER(Sheet1, Sheet1[Category] = "furniture"), Sheet1[Amount]) * 3
创建总计度量值(可选,直接在视觉对象中相加也可):
总计 = [食品] + [家具]
2. 原理说明
SUMX会遍历筛选后的行,先计算符合条件的金额总和,再乘以对应系数,无论在姓名分组行还是总计行,都会正确执行分组计算逻辑。- 总计行自动汇总每个姓名的食品、家具加权值,得到正确的总计结果。
内容的提问来源于stack exchange,提问作者lil chill
相关产品推荐
相关产品推荐

