Power BI:基于当前日期计算过去五年动态YTD销售额
解决方案
核心思路是提取当前日期的月日部分,以此为基准筛选各年度内从年初到对应月日的销售额,同时限定计算范围为过去五年。以下是具体DAX度量值及说明:
动态年度截至当日销售额 = VAR CurrentDate = TODAY() -- 获取当前日期(示例为5/22) VAR CurrentMonthDay = FORMAT(CurrentDate, "MMDD") -- 提取月日格式字符串,如"0522" VAR Past5Years = DATESINPERIOD('日期表'[日期], CurrentDate, -5, YEAR) -- 锁定过去五年的日期范围 VAR FilteredDates = FILTER( Past5Years, FORMAT('日期表'[日期], "MMDD") <= CurrentMonthDay -- 筛选各年度内早于/等于当前月日的日期 ) RETURN CALCULATE( SUM('销售表'[销售额]), FilteredDates, ALL('日期表'[年份]) -- 确保各年度独立计算,不受当前年份上下文限制 )
关键细节说明
- CurrentMonthDay:统一用月日字符串匹配各年度截止点,避免因闰年、不同月份天数导致的日期匹配误差。
- FilteredDates:替代内置YTD函数的固定逻辑,精准筛选到对应年度的当日,而非整月数据。
- ALL('日期表'[年份]):若报表存在年份切片器或上下文,该函数可保证每个年度的YTD计算独立生效。
闰年特殊处理(可选)
若当前日期为2月29日,可将非闰年的截止日自动替换为2月28日,修改CurrentMonthDay变量即可:
VAR CurrentMonthDay = IF( FORMAT(CurrentDate, "MMDD") = "0229", "0228", FORMAT(CurrentDate, "MMDD") )
使用前提
- 模型中需包含独立日期表,并在Power BI中标记为日期表(建模 > 标记为日期表)。
- 销售表与日期表通过日期字段建立正确关联。
内容的提问来源于stack exchange,提问作者user02
相关产品推荐
相关产品推荐

