Power Pivot如何筛选列值 用DAX计算各期间预算及偏差
Power Pivot 按固定期间统计预算的DAX实现方法
首先确认你已经把包含「物料组」「预算」「期间」三个核心字段的数据源表加载到Power Pivot数据模型,以下示例默认事实表名为预算表,你可以替换成自己实际的表名。
固定期间预算汇总度量值创建
你已经知道要用CALCULATE+SUM的组合,核心只需要在CALCULATE的筛选参数位置,给「期间」字段指定固定匹配值即可,三个度量值的DAX写法如下:
- 期间3预算总和:
期间3预算总额 = CALCULATE(SUM('预算表'[预算]), '预算表'[期间] = 3)
- 期间4预算总和:
期间4预算总额 = CALCULATE(SUM('预算表'[预算]), '预算表'[期间] = 4)
- 期间6预算总和:
期间6预算总额 = CALCULATE(SUM('预算表'[预算]), '预算表'[期间] = 6)
写法说明
CALCULATE函数从第二个参数开始,接收的就是自定义筛选条件,直接写[字段名] = 目标值即可生效,会在计算求和前先把上下文筛选到符合条件的行。如果你的「期间」字段加载后是文本格式,把等号后的数字加引号即可,比如'预算表'[期间] = "3",避免类型不匹配报错。
期间百分比偏差度量值写法
基于上面三个基础汇总度量值,用DIVIDE函数做除法即可,DIVIDE会自动处理分母为0的异常,不会返回报错值。比如计算期间4相对期间3的预算偏差率,DAX写法如下:
期间4较期间3预算偏差率 = DIVIDE( [期间4预算总额] - [期间3预算总额], [期间3预算总额] )
写完后把这个度量值的数字格式设置为百分比即可。其他期间的偏差率只需要替换分子分母里引用的对应度量值就行,比如期间6相对期间4的偏差率,就把分子换成[期间6预算总额] - [期间4预算总额],分母换成[期间4预算总额]。
补充说明:以上度量值天然支持按物料组维度下钻统计,你只需要把「物料组」字段拖到透视表行/列标签,度量值会自动在每个物料组的筛选上下文里计算对应期间的预算值,不需要额外修改DAX代码。
内容的提问来源于stack exchange,提问作者KyPrsz
相关产品推荐
相关产品推荐

