在 BigQuery 中获取不超过一小时的数据

Get data that is no more than an hour old in BigQuery

正在尝试使用语句:

SELECT * 
FROM data.example 
WHERE TIMESTAMP(timeCollected) < DATE_ADD(USEC_TO_TIMESTAMP(NOW()), 60, 'MINUTE') 

从我的 bigquery 数据中获取数据。即使时间不在范围内,它似乎也是 return 相同的结果集。 timeCollected 的格式为 2015-10-29 16:05:06.

我正在尝试构建一个查询,旨在 return 是不早于一个小时的数据。因此,应 return 编辑过去一小时内收集的数据,其余的应忽略。

您查询的意思是 "return to me anything that has a collection time smaller than an hour in the future",字面意思是您的整个 table。你想要以下内容(至少从我通过你的评论得到的):

SELECT * 
FROM data.example 
WHERE TIMESTAMP(timeCollected) > DATE_ADD(USEC_TO_TIMESTAMP(NOW()), -60, 'MINUTE')

这意味着不会返回不超过一小时前的任何收集时间。我相信这就是你想要的。

此外,除非您需要,否则 Select * 在 BigQuery 中并不理想。由于数据是按列保存的,因此您可以通过仅选择您需要的内容来节省资金。我不知道你的用例,所以 * 可能是有保证的

获取过去一小时内收集的 table 数据:

SELECT * FROM [data.example@-3600000--1]

https://cloud.google.com/bigquery/table-decorators

使用标准 SQL:

SELECT * FROM data
WHERE timestamp > TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL -60 MINUTE)

使用标准 SQL:

SELECT * FROM data WHERE timestamp > **TIMESTAMP_SUB**(CURRENT_TIMESTAMP(), INTERVAL 60 MINUTE)