BigQuery SQL无硬编码排除当前财年(7.1至次年6.30)数据的方法
BigQuery动态排除当前财年数据实现方案
你已有的财年计算规则(给日期加6个月后取年份)可以直接复用在当前日期计算上,无需硬编码财年数值,就能实现过滤逻辑。
两种常见场景的实现代码
场景1:直接在查询中过滤,不需要提前生成财年字段
SELECT * FROM `TABLE A` WHERE EXTRACT(YEAR FROM DATE_ADD(CalendarDate, INTERVAL 6 MONTH)) != EXTRACT(YEAR FROM DATE_ADD(CURRENT_DATE(), INTERVAL 6 MONTH))
场景2:查询逻辑中已提前生成FinancialYear字段(CTE/子查询/视图场景)
WITH processed_table AS ( SELECT *, EXTRACT(YEAR FROM DATE_ADD(CalendarDate, INTERVAL 6 MONTH)) AS FinancialYear FROM `TABLE A` ) SELECT * FROM processed_table WHERE FinancialYear != EXTRACT(YEAR FROM DATE_ADD(CURRENT_DATE(), INTERVAL 6 MONTH))
逻辑验证说明:
比如当前日期为2024年5月(属于2023/2024财年),给当前日期加6个月得到2024年11月,提取年份为2024,和你原有逻辑计算的财年数值完全匹配;如果当前日期为2024年8月(属于2024/2025财年),加6个月后得到2025年2月,提取年份为2025,也和原有财年计算规则对齐,不会出现逻辑偏差。
内容的提问来源于stack exchange,提问作者Aahi
相关产品推荐
相关产品推荐

