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



尝试使用语句:

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

从我的bigquery数据中获取数据。即使时间不在范围内,它似乎也会返回相同的结果集。CCD_ 1的格式为CCD_。

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

使用标准SQL:

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

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

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

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

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

获取最后一小时内收集的表格数据:

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

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

使用标准SQL:

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

相关内容

最新更新