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

Google bigquery 获取BigQuery中不超过一小时的数据,google-bigquery,Google Bigquery,尝试使用以下语句: SELECT * FROM data.example WHERE TIMESTAMP(timeCollected) < DATE_ADD(USEC_TO_TIMESTAMP(NOW()), 60, 'MINUTE') 选择* 从data.example 其中TIMESTAMP(timeCollected)

尝试使用以下语句:

SELECT * 
FROM data.example 
WHERE TIMESTAMP(timeCollected) < DATE_ADD(USEC_TO_TIMESTAMP(NOW()), 60, 'MINUTE') 
选择*
从data.example
其中TIMESTAMP(timeCollected)
从我的bigquery数据中获取数据。即使时间不在范围内,它似乎也会返回相同的结果集
timeCollected
的格式为
2015-10-29 16:05:06

我正在尝试构建一个查询,该查询旨在返回不超过一小时的is数据。因此,应返回过去一小时内收集的数据,其余数据应忽略。

您所做的查询意味着“将未来收集时间小于一小时的任何数据返回给我”,这实际上意味着您的整个表格。你想要以下(至少从你的评论中我得到):

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


此外,除非您需要,否则Select*在BigQuery中并不理想。因为数据是按列保存的,所以您可以通过只选择行中需要的内容来节省资金。我不知道您的用例,因此*可能有权在过去一小时内收集表格数据:

SELECT * FROM [data.example@-3600000--1]
使用标准SQL:

SELECT * FROM data
WHERE timestamp > TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL -60 MINUTE)
SELECT * FROM data WHERE timestamp > **TIMESTAMP_SUB**(CURRENT_TIMESTAMP(), INTERVAL 60 MINUTE)
使用标准SQL:

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

这个范围意味着“未来一个小时内的任何事情”。。。我相信这应该总是返回表中的每个条目,除非您在将来收集数据,否则查询返回的含义是未来一个小时以内的任何内容。如果数据超过一小时,它应该忽略它。这似乎工作得很好,除了时间间隔之外的一些时间也包括在内。在标准SQL中有什么方法可以做到这一点吗?@JoshLaird-标准SQL不像传统SQL那样支持范围修饰符。同时,它也支持类似快照装饰器的功能-请查看-如果有更多问题-请发布新问题,我很乐意回答更多问题:o)