如何 运行 查询以获取过去 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()
我想在 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()