在 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))
我在字段 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))