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.08FILTER约束:强制限定上年的求和范围是从年初到PYMaxDate,不会延伸到整月- 保留
SAMEPERIODLASTYEAR:确保当筛选多个月度期间(比如P01-P09)时,只计算上年对应月份范围内到刷新日的销售额
额外适配:如果使用日期维度表的刷新日标记
如果你的日期表中有专门标记刷新日的列(比如IsRefreshDate),可以替换CurrentMaxDate为:
VAR CurrentMaxDate = CALCULATE(MAX('Date'[Date]), 'Date'[IsRefreshDate] = TRUE())
内容的提问来源于stack exchange,提问作者user3655159
相关产品推荐
相关产品推荐

