如何修正DAX公式以正确计算指定表结构的Prev YTD(上一财年累计)?
解决自定义财年YTD同比计算问题
你遇到的问题核心在于:SAMEPERIODLASTYEAR 默认是基于日历年度偏移日期,但你的YTD是基于**自定义财年(9/30结束)**计算的,直接嵌套会导致筛选上下文混乱,最终返回了整个上一财年的累计值而非同期YTD。
这里有两种可靠的调整方案,都能精准计算上一财年同期累计:
方案一:结合DATESYTD与SAMEPERIODLASTYEAR
这种方法先明确当前财年的YTD日期范围,再取该范围的去年同期,最后计算对应区间的总和:
Total Retail Dues YTD LY = CALCULATE( [Total Retail Dues], SAMEPERIODLASTYEAR(DATESYTD(DateTable[Date], "9/30")) )
逻辑拆解:
DATESYTD(DateTable[Date], "9/30"):获取当前筛选下,从财年起始日(10/1)到当前日期的所有日期SAMEPERIODLASTYEAR(...):将上述日期范围整体偏移1年,得到上一财年的同期日期区间CALCULATE([Total Retail Dues], ...):计算该区间内的零售应付款总和,即上一财年YTD累计
方案二:用DATEADD直接偏移日期后计算YTD
这种写法更简洁,直接对日期偏移1年,再基于偏移后的日期计算自定义财年YTD:
Total Retail Dues YTD LY = TOTALYTD( [Total Retail Dues], DATEADD(DateTable[Date], -1, YEAR), "9/30" )
逻辑拆解:
DATEADD(DateTable[Date], -1, YEAR):将当前筛选的日期全部往前偏移1年TOTALYTD(..., ..., "9/30"):基于偏移后的日期,计算从财年起始日到该日期的累计值
额外注意事项
确保你的DateTable已经在Power BI中标记为日期表(右键表 → 标记为日期表),时间智能函数只有在正确的日期表上下文下才能正常工作。
内容的提问来源于stack exchange,提问作者mdevm




