You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在DAX中获取财年始于5月的各季度最后日期

DAX中查找季度最后日期的两种场景解决方案

问题描述

  • 问题1:如何在DAX中查找自然季度的最后日期?
  • 问题2:当财年从5月开始时,如何在DAX中查找每个财季的最后日期?

预期结果

  • 2024年1月26日 星期五
  • 2024年4月26日 星期五

示例数据表

财年(FiscalYear)季度(Quarter)月份(month)财年标识(fy)周(wk)金额(amount)预期结果(expected answer)
fy24Q3一月fy24WK3860
fy24Q3一月fy24WK396161
fy24Q4二月fy24WK4063
fy24Q4二月fy24WK4166
fy24Q4二月fy24WK4266
fy24Q4二月fy24WK4367
fy24Q4三月fy24WK4468
fy24Q4三月fy24WK4566
fy24Q4三月fy24WK4670
fy24Q4三月fy24WK4771
fy24Q4三月fy24WK4872
fy24Q4四月fy24WK4966
fy24Q4四月fy24WK5070
fy24Q4四月fy24WK5171
fy24Q4四月fy24WK527575
fy25Q1五月fy25WK180
fy25Q1五月fy25WK260
fy25Q1五月fy25WK350
fy25Q1五月fy25WK44040

问题1:自然季度最后日期的DAX实现

获取季度最后日期值

如果数据表中包含日期列(如Date),直接使用ENDOFQUARTER函数即可返回当前上下文日期所在自然季度的最后一天:

自然季度最后日期 = ENDOFQUARTER('表'[Date])

分组获取对应季度最后一条记录的金额

要像示例中那样,按财年、自然季度分组,取该季度最后一条记录的金额,结合CALCULATE和LASTNONBLANK实现:

自然季度最后金额 = 
VAR 当前财年 = '表'[FiscalYear]
VAR 当前季度 = '表'[Quarter]
RETURN
CALCULATE(
    LASTNONBLANK('表'[amount], 1),
    FILTER(
        ALL('表'),
        '表'[FiscalYear] = 当前财年 && '表'[Quarter] = 当前季度
    )
)

问题2:财年从5月开始时的财季最后日期实现

当财年起始于5月,财季划分规则为:

  • Q1:5-7月
  • Q2:8-10月
  • Q3:11月-次年1月
  • Q4:2-4月

获取财季最后日期值

基于日期列计算对应财季的最后一天:

财季最后日期(财年5月起) = 
VAR 财年起始日 = DATE(YEAR('表'[Date]) - IF(MONTH('表'[Date]) < 5, 1, 0), 5, 1)
VAR 财季编号 = CEILING((MONTH('表'[Date]) - MONTH(财年起始日) + 12) % 12 / 3, 1)
VAR 财季结束日 = 
    SWITCH(
        财季编号,
        1, DATE(YEAR(财年起始日), 7, 31),
        2, DATE(YEAR(财年起始日), 10, 31),
        3, DATE(YEAR(财年起始日) + 1, 1, 31),
        4, DATE(YEAR(财年起始日) + 1, 4, 30)
    )
RETURN 财季结束日

分组获取对应财季最后一条记录的金额

按财年标识(fy)和财季分组,取该财季最后一条记录的金额:

财季最后金额(财年5月起) = 
VAR 当前财年标识 = '表'[fy]
VAR 当前财季 = '表'[Quarter]
RETURN
CALCULATE(
    LASTNONBLANK('表'[amount], 1),
    FILTER(
        ALL('表'),
        '表'[fy] = 当前财年标识 && '表'[Quarter] = 当前财季
    )
)

内容的提问来源于stack exchange,提问作者symkly

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 20:13:14