You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Power BI自定义表中计算两行数据的月度成本差值?

错误原因

PREVIOUSMONTH 属于DAX时间智能函数,要求输入参数必须是日期类型的连续列,你当前的'Month'[Month]列存储的是「January」「Feb」这类文本字符串,不符合函数要求,因此触发报错。同时你原有代码存在语法疏漏,PREVIOUSMONTH的参数缺少列名的闭合方括号,也会导致运行异常。

解决方法

方案1:适配原有逻辑(推荐)

先把月份列转为标准日期格式,就能正常使用时间智能函数:

  1. 新增标准日期列,给月份补全默认年份和日,转成日期类型:
标准日期 = DATE(2024, MONTH('Month'[Month] & " 1"), 1)

如果你的数据包含多年,直接替换公式里的固定年份为对应年份字段即可。
2. 将该标准日期列标记为日期表后,修改差值公式即可正常运行:

Variance = [Cost] - CALCULATE([Cost], PREVIOUSMONTH('Month'[标准日期]))

方案2:手动计算月份差值(不用时间智能函数)

不需要依赖时间智能函数,通过月份序号匹配上一月数值:

  1. 新增序号列,给每个时间节点分配连续的数字编号:
-- 单年份场景用这个
月份序号 = MONTH('Month'[Month] & " 1")

-- 多年份场景用这个,避免跨年匹配错误
年月序号 = YEAR('Month'[标准日期]) * 100 + MONTH('Month'[标准日期])
  1. 手动写逻辑匹配上一个月的成本计算差值:
Variance = 
VAR 当前序号 = MAX('Month'[月份序号]) -- 多年份场景替换为[年月序号]
VAR 上月成本 = CALCULATE([Cost], ALL('Month'), 'Month'[月份序号] = 当前序号 - 1)
RETURN [Cost] - 上月成本

内容的提问来源于stack exchange,提问作者MDL7833

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 19:24:03