Power Pivot中如何在数据透视表内实现行聚合结果相除计算?
Power Pivot 实现单位数量平均收费/预期收入的正确方案
问题核心
你的数据采用行级存储模式:Cat1字段包含三类指标(Charges、Expected Rev、VolQty),OR Case字段对应各类指标的数值。要实现总收费/总数量、总预期收入/总数量的计算,必须通过DAX度量值精准筛选聚合,普通透视表功能无法满足需求。
之前方法的错误原因
- 方法1:将
Sum of OR Case改为Average of OR Case是对所有行数值取平均,并非总收费除以总数量,逻辑完全错误。 - 方法2:
Show Values As > % Of要求对比项处于同一维度分组内,而你的Cat1是不同指标分类,无法直接适配该功能,导致#N/A。 - 方法3:
SUMX(DISTINCT(...))的聚合逻辑错误,且未处理VolQty总和为0的情况,因此出现#NUM!;另外字段引用可能存在混淆(你写的Expense Category应为Cat1)。
正确DAX度量值
假设你的数据表名为DataTable,数值字段为OR Case,分类字段为Cat1,创建以下两个度量值:
1. 单位数量平均收费
单位收费 = VAR TotalCharges = CALCULATE(SUM(DataTable[OR Case]), DataTable[Cat1] = "Charges") VAR TotalVolQty = CALCULATE(SUM(DataTable[OR Case]), DataTable[Cat1] = "VolQty") RETURN IF(TotalVolQty = 0, BLANK(), TotalCharges / TotalVolQty)
2. 单位数量平均预期收入
单位预期收入 = VAR TotalExpectedRev = CALCULATE(SUM(DataTable[OR Case]), DataTable[Cat1] = "Expected Rev") VAR TotalVolQty = CALCULATE(SUM(DataTable[OR Case]), DataTable[Cat1] = "VolQty") RETURN IF(TotalVolQty = 0, BLANK(), TotalExpectedRev / TotalVolQty)
使用步骤
- 打开Power Pivot数据模型,点击「度量值」选项卡 → 「新建度量值」,分别粘贴上述两个DAX公式(注意替换实际表名/字段名)。
- 返回数据透视表,将新建的两个度量值拖入「值」区域。
- 如需按其他维度(如日期、部门)拆分计算,直接将对应字段拖入「行」/「列」区域,度量值会自动适配分组计算。
注意事项
- 加入
IF(TotalVolQty = 0, BLANK())是为了避免数量为0时出现错误值,返回空白更符合报表需求。 - 度量值的逻辑是先计算当前分组内的总收费/总预期收入,再除以同分组内的总数量,完全匹配你要的「单位数量平均」计算逻辑。
内容的提问来源于stack exchange,提问作者Mike
相关产品推荐
相关产品推荐

