如何 运行 查询以获取过去 12 个月的结果 (BigQuery)

How to run a query to get results of last 12 months ( BigQuery)

我想在 Big Query table 中获取特定 ID 过去 12 个月的记录。我从原始时间戳列中提取月份和年份作为单独的列。我尝试使用 date_add() 和 date_diff() 但出现了一些错误。我的数据集是这样的:

Month Year MonthName    ID
8     2018   August      1
9     2018   September   2
9     2017   September   3

我怎样才能做到这一点?

一种方法是将 year/month 转换为自某个日期以来的月数。然后对当前日期执行相同操作:

where year * 12 + month >= extract(year from current_date) * 12 + extract(month from current_date) - 12

这假设您没有未来的数据。同样的想法也适用于未来的日期(使用 < 而不是 >=)。

I have extracted month and year as separate columns from the original timestamp column

我建议根据您的原始时间戳列进行 12 个月的过滤。
假设它被命名为 ts - 下面是 BigQuery Standard SQL

WHERE DATE(ts) BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 12 MONTH) AND CURRENT_DATE() 

例如

#standardSQL
SELECT ts, id
FROM `project.dataset.table`
WHERE id = 1
AND DATE(ts) BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 12 MONTH) AND CURRENT_DATE() 

timestamp 被假定为 BQ 的标准时间戳命名 table 作为时间标识符字段。因此,您可以像下面那样进行过滤以仅获取最近 12 个月的数据:

WHERE DATE(TIMESTAMP_MILLIS(timestamp)) BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 12 MONTH) and CURRENT_DATE()