在 BigQuery 中获取过去 6 个月的第一天

Get last 6 months first day in BigQuery

我在字段 LOAD_DATE 中有一个按日期分区的 table。 我需要提取每个月第一天的最后 6 个分区。


2022-01-01
2021-12-01
2021-11-01
2021-10-01
2021-09-01
2021-08-01

到目前为止,我有这样的东西,非常难看,因为我必须复制粘贴一行以允许更多个月:

SELECT *
FROM partitionedTable
where FECHA_CARGA IN (
              Select 
              DATE_TRUNC(CURRENT_DATE, MONTH)
              UNION ALL 
              Select 
              DATE_TRUNC(DATE_SUB(CURRENT_DATE, INTERVAL 1 MONTH), MONTH)
              UNION ALL 
              Select 
              DATE_TRUNC(DATE_SUB(CURRENT_DATE, INTERVAL 2 MONTH), MONTH),
              UNION ALL 
              Select 
              DATE_TRUNC(DATE_SUB(CURRENT_DATE, INTERVAL 3 MONTH), MONTH),
              UNION ALL 
              Select 
              DATE_TRUNC(DATE_SUB(CURRENT_DATE, INTERVAL 4 MONTH), MONTH),
              UNION ALL 
              Select 
              DATE_TRUNC(DATE_SUB(CURRENT_DATE, INTERVAL 5 MONTH), MONTH)
)

如何改进此代码?

您应该可以将 where 子句更改为

fecha_carga in UNNEST(generate_date_array(  date_trunc(date_sub(current_date(), INTERVAL 5 MONTH), MONTH), current_date() , INTERVAL 1 MONTH))