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

PowerBI中SamePeriodLastYear计算上年同期销售额异常问题咨询

解决PowerBI上年同期YTD仅求和至对应刷新日的问题

问题根源

原公式中DATESYTD('Date'[Date])在月度期间筛选下,会自动将本年的日期范围延伸至所选月份的最后一天,再通过SAMEPERIODLASTYEAR映射到上年的整月,导致求和范围超出了对应刷新日(如2022.10.08)。而按日展示时,日期筛选精确到单日,公式表现正常。

解决方案:自定义日期范围约束

使用以下DAX公式,先锁定本年的实际最大日期(刷新日),再映射到上年的对应日期,最终只求和上年年初到该对应日期的销售额:

TGS PY YTD = 
VAR CurrentMaxDate = MAX('fact_Sales'[Date]) // 获取本年实际销售的最大日期(即刷新日)
VAR PYMaxDate = DATE(YEAR(CurrentMaxDate)-1, MONTH(CurrentMaxDate), DAY(CurrentMaxDate)) // 计算上年对应刷新日
VAR PYStartDate = DATE(YEAR(PYMaxDate), 1, 1) // 上年年初日期
RETURN
CALCULATE(
    SUM('fact_Sales'[TGS (LC)]),
    FILTER(
        ALL('Date'),
        'Date'[Date] >= PYStartDate && 'Date'[Date] <= PYMaxDate
    ),
    SAMEPERIODLASTYEAR('Date'[Date]) // 保留期间筛选上下文,确保只计算对应期间的上年范围
)

公式说明

  • CurrentMaxDate:直接取销售事实表中的最大日期,确保是实际刷新日而非月度最后一天
  • PYMaxDate:精准映射到上年的同一天,比如2023.10.08对应2022.10.08
  • FILTER约束:强制限定上年的求和范围是从年初到PYMaxDate,不会延伸到整月
  • 保留SAMEPERIODLASTYEAR:确保当筛选多个月度期间(比如P01-P09)时,只计算上年对应月份范围内到刷新日的销售额

额外适配:如果使用日期维度表的刷新日标记

如果你的日期表中有专门标记刷新日的列(比如IsRefreshDate),可以替换CurrentMaxDate为:

VAR CurrentMaxDate = CALCULATE(MAX('Date'[Date]), 'Date'[IsRefreshDate] = TRUE())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 18:52:39