在 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]
使用标准 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)
正在尝试使用语句:
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]
使用标准 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)