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

无日期表时如何用DAX计算上年同期营收?

解决方案:计算上年同期营收(YEARMONTH聚合表场景)

SAMEPERIODLASTYEAR()依赖连续完整的日期上下文,你的聚合表仅包含每月首日且可能存在缺失月份,导致函数无法正确匹配上年同期。以下是三种可行的解决方法:

方法一:直接基于YEARMONTH匹配(无需日期表)

先计算上年同期的YEARMONTH值,再通过LOOKUPVALUE匹配对应营收:

  1. 添加计算列生成上年年月:
PY_YEARMONTH = LEFT([YEARMONTH], 4) - 1 & RIGHT([YEARMONTH], 2)
  1. 基于上年年月匹配营收:
PY_REVENUE = LOOKUPVALUE('你的表名'[REVENUE], '你的表名'[YEARMONTH], [PY_YEARMONTH])

注:此方法适用于表中每个YEARMONTH唯一的场景

方法二:建立独立日期表(适配时间智能函数)

如果后续需要使用更多时间智能函数,推荐构建完整日期表:

  1. 创建日期表(DAX):
日期表 = 
ADDCOLUMNS(
    CALENDAR(MIN('你的表名'[DATE]), MAX('你的表名'[DATE])),
    "YEARMONTH", FORMAT([Date], "YYYYMM")
)
  1. 在Power BI中右键日期表 → 标记为日期表,并建立原表与日期表的关系(原表YEARMONTH ↔ 日期表YEARMONTH)
  2. 编写度量值计算上年同期营收:
PY_REVENUE = CALCULATE(SUM('你的表名'[REVENUE]), SAMEPERIODLASTYEAR('日期表'[Date]))

方法三:用CALCULATE+FILTER直接过滤上年同期

无需额外列或日期表,直接通过过滤条件匹配上年同期:

PY_REVENUE = 
CALCULATE(
    SUM('你的表名'[REVENUE]),
    FILTER(
        ALL('你的表名'),
        LEFT('你的表名'[YEARMONTH], 4) = LEFT([YEARMONTH], 4) - 1 &&
        RIGHT('你的表名'[YEARMONTH], 2) = RIGHT([YEARMONTH], 2)
    )
)

注:ALL('你的表名')用于清除当前行上下文,确保能匹配到表中所有上年同期的记录

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 16:34:33