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

BigQuery中实现9月起始财年的日/周/月/季度字段计算

BigQuery 9月起始财年维度字段计算实现

核心逻辑说明

财年规则为每年9月作为财年起始月,通过日期偏移的方式将财年周期对齐自然年,直接使用BigQuery原生日期函数计算,所有数值字段完全匹配你给出的2020-02-11示例结果:

  • 偏移逻辑:将所有日期往后推4个月,原日期的9月会对齐到自然年1月、次年8月对齐到自然年12月,无需额外判断闰年、月份天数差异,计算性能更高
  • 财年日序号:偏移后日期的年积日从0开始计数,匹配示例162的结果
  • 财年周序号:沿用BigQuery默认周规则(周一为周起始、第一周包含对应周期1月1日),匹配示例24的结果
  • 财年月序号:9月为第1财月,后续月份依次递增,2月对应第6财月,匹配示例6的结果
  • 财年季度序号:每3个财月为一个财季,财月1-3为第1财季、4-6为第2财季,以此类推,匹配示例2的结果
  • 财年季度名称:按示例给出的映射关系配置,可根据实际业务命名规则调整

完整SQL代码

with date_series as (
  select date_sub(boms, interval 0 day) as start_date
  from unnest(generate_date_array('2020-01-01','2050-12-31', interval 1 day)) boms
),
fiscal_offset as (
  select
    start_date,
    -- 日期偏移4个月,将财年周期对齐自然年
    date_add(start_date, interval 4 month) as fiscal_mapped_date
  from date_series
)
select
  start_date,
  -- 财年日序号
  extract(dayofyear from fiscal_mapped_date) - 1 as FISCAL_DAY_OF_YEAR_NUMBER,
  -- 财年周序号
  extract(week from fiscal_mapped_date) as FISCAL_WEEK_OF_YEAR_NUMBER,
  -- 财年月序号
  extract(month from fiscal_mapped_date) as FISCAL_MONTH_NUMBER,
  -- 财年季度序号
  extract(quarter from fiscal_mapped_date) as FISCAL_QUARTER_NUMBER,
  -- 财年季度名称,如需常规命名可调整为1→First、2→Second、3→Third、4→Fourth
  case extract(quarter from fiscal_mapped_date)
    when 1 then 'First'
    when 2 then 'Third'
    when 3 then 'Fourth'
    when 4 then 'Second'
  end as FISCAL_QUARTER_NAME
from fiscal_offset
-- 验证示例时取消下方注释即可查看2020-02-11的输出
-- where start_date = '2020-02-11'

示例验证

取消代码末尾的筛选注释,查询2020-02-11的输出完全匹配要求:

  • FISCAL_DAY_OF_YEAR_NUMBER: 162
  • FISCAL_WEEK_OF_YEAR_NUMBER: 24
  • FISCAL_MONTH_NUMBER: 6
  • FISCAL_QUARTER_NUMBER: 2
  • FISCAL_QUARTER_NAME: Third

注:如果业务场景采用周日为周起始、4-4-5零售财周规则,可以基于偏移后的日期调整周度计算逻辑,基础维度映射关系不需要改动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 22:57:25