如何在DAX中调整财年起始月以计算QTD与YTD?
自定义财年(5月1日起始)的QTD/YTD计算方案
当然可以在DAX中调整财年起始月份,下面分场景给出具体实现:
一、财年YTD(年度至今)的简化实现
DAX的DATESYTD函数支持通过第二个参数指定财年结束日期,你的财年是5月1日至次年4月30日,财年结束月份为4,直接用以下代码即可:
自定义财年YTD = CALCULATE( [measure], DATESYTD('Calendar'[Date], "04-30") )
注:第二个参数格式为"MM-DD",代表财年的最后一天。
二、财年QTD(季度至今)的实现
DATESQTD没有直接的财季调整参数,需要先在日历表中添加财年相关计算列,再自定义筛选逻辑:
步骤1:给日历表添加计算列
在Calendar表中新增3个计算列,标记财年、财季及财季起始日期:
// 财年:5月及以后属于下一年财年 财年 = IF(MONTH('Calendar'[Date]) >= 5, YEAR('Calendar'[Date]) + 1, YEAR('Calendar'[Date])) // 财季:5-7月为Q1,8-10月为Q2,11-1月为Q3,2-4月为Q4 财季 = SWITCH( MONTH('Calendar'[Date]), 5,6,7, "Q1", 8,9,10, "Q2", 11,12,1, "Q3", 2,3,4, "Q4" ) // 财季起始日期 财季起始日期 = SWITCH( MONTH('Calendar'[Date]), 5,6,7, DATE(YEAR('Calendar'[Date]), 5, 1), 8,9,10, DATE(YEAR('Calendar'[Date]), 8, 1), 11,12,1, DATE(IF(MONTH('Calendar'[Date]) >= 11, YEAR('Calendar'[Date]), YEAR('Calendar'[Date]) - 1), 11, 1), 2,3,4, DATE(YEAR('Calendar'[Date]) - 1, 2, 1) )
步骤2:编写QTD计算度量值
基于上述计算列,编写自定义QTD度量值:
自定义财年QTD = CALCULATE( [measure], FILTER( ALL('Calendar'), 'Calendar'[财年] = MAX('Calendar'[财年]) && 'Calendar'[Date] >= MAX('Calendar'[财季起始日期]) && 'Calendar'[Date] <= MAX('Calendar'[Date]) ) )
额外提示
如果你的日历表是完整无缺失的日期序列,也可以用DATEADD结合财年起始简化QTD筛选逻辑,但上述方法兼容性更强,适配各种日历表场景。
内容的提问来源于stack exchange,提问作者symkly
相关产品推荐
相关产品推荐

