【问题标题】:How to run a query to get results of last 12 months ( BigQuery)如何运行查询以获取过去 12 个月的结果 (BigQuery)
【发布时间】:2019-08-12 09:52:35
【问题描述】:
我想获取 Big Query 表中特定 ID 过去 12 个月的记录。我已从原始时间戳列中提取月份和年份作为单独的列。我尝试使用 date_add() 和 date_diff() 但我遇到了一些错误。我的数据集是这样的:
Month Year MonthName ID
8 2018 August 1
9 2018 September 2
9 2017 September 3
我怎样才能做到这一点?
【问题讨论】:
标签:
sql
google-cloud-platform
google-bigquery
bigquery-standard-sql
【解决方案1】:
我已从原始时间戳列中提取月份和年份作为单独的列
我建议根据您的原始时间戳列进行 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()
【解决方案2】:
一种方法是将年/月转换为自某个日期以来的月份。然后对当前日期执行相同操作:
where year * 12 + month >= extract(year from current_date) * 12 + extract(month from current_date) - 12
这假设您没有未来的数据。同样的想法也适用于未来的日期(使用 =)。
【解决方案3】:
timestamp 被假定为 BQ 表的标准时间戳命名为时间标识符字段。因此,您可以像下面这样过滤以仅获取最近 12 个月的数据:
WHERE DATE(TIMESTAMP_MILLIS(timestamp)) BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 12 MONTH) and CURRENT_DATE()