PowerBI计算列计算财年起始日期返回1904年异常值问题
问题原因分析
- 第一层错误:嵌套使用了多余的
YEAR()函数。sales[close_date].[Year]作为日期层次结构的年份成员,已经直接返回整数类型的年份值(比如2016年7月31日对应的返回值为2016)。而YEAR()函数仅支持日期类型入参,传入整数2016时,DAX会将该整数视为日期序列值(即基准日期之后的天数偏移),解析后得到的日期年份为1905,减1后就得到了异常的1904年。 - 第二层错误:错误对月、日参数使用
MONTH()、DAY()函数。DATE函数的第二、第三参数本身就接收整数类型的月份、日期值,直接传入12、22即可。MONTH()、DAY()仅接收日期类型参数,你直接传入整数12、22时,会被解析为基准日期偏移12天、22天对应的日期,取月份得到1、取日得到21,最终拼接出你看到的1904年1月21日的错误结果。
正确实现方案
如果你需要所有日期对应的财年起始日均为所属公历年的前一年12月22日,直接使用以下代码即可:
Year Start = DATE(YEAR(sales[close_date]) - 1, 12, 22)
如果需要按常规财年规则分段(即当年12月22日及之后的日期,财年起始日为当年12月22日),可以使用以下逻辑:
Year Start = VAR CurDate = sales[close_date] VAR CurYear = YEAR(CurDate) VAR CurYearFyStart = DATE(CurYear, 12, 22) RETURN IF(CurDate < CurYearFyStart, DATE(CurYear - 1, 12, 22), CurYearFyStart)
内容的提问来源于stack exchange,提问作者FrostyDuke
相关产品推荐
相关产品推荐

