Sql 如何运行查询以获取过去12个月的结果(BigQuery)
我想在大查询表中获取过去12个月特定ID的记录。我从原始的timestamp列中提取了月份和年份作为单独的列。我尝试使用date\u add()和date\u diff(),但出现了一些错误。我的数据集如下所示:Sql 如何运行查询以获取过去12个月的结果(BigQuery),sql,google-cloud-platform,google-bigquery,bigquery-standard-sql,Sql,Google Cloud Platform,Google Bigquery,Bigquery Standard Sql,我想在大查询表中获取过去12个月特定ID的记录。我从原始的timestamp列中提取了月份和年份作为单独的列。我尝试使用date\u add()和date\u diff(),但出现了一些错误。我的数据集如下所示: Month Year MonthName ID 8 2018 August 1 9 2018 September 2 9 2017 September 3 如何实现这一点?一种方法是从某个日期开始将年/月转换为月。然后对当前
Month Year MonthName ID
8 2018 August 1
9 2018 September 2
9 2017 September 3
如何实现这一点?一种方法是从某个日期开始将年/月转换为月。然后对当前日期执行相同操作:
where year * 12 + month >= extract(year from current_date) * 12 + extract(month from current_date) - 12
这假设您没有未来的数据。对于未来的日期也有同样的想法(使用<而不是>=)
我从原始的timestamp列中提取了月份和年份作为单独的列
我建议根据原始时间戳列进行12个月的筛选。假设它被命名为
ts
——下面是用于BigQuery标准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()
时间戳
被假定为BQ表的标准时间戳命名,作为时间标识符字段。因此,您可以按如下方式进行筛选,仅获取最近12个月的数据:
WHERE DATE(TIMESTAMP_MILLIS(timestamp)) BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 12 MONTH) and CURRENT_DATE()