Bigquery 表装饰器 绝对时间使用

Posted

技术标签:

【中文标题】Bigquery 表装饰器 绝对时间使用【英文标题】:Big Query Table decorators Absolute time Usage 【发布时间】:2018-01-19 12:27:31 【问题描述】:

我正在尝试查询一个每日分区数据集访问量。

套装变得非常大,我需要降低 BQ 成本 我正在尝试使用具有绝对值的快照装饰器来获取数据,因为我有日志的确切时间 在此示例中,我需要提取发生在的事件的日志 2018-01-15 08:34:55 我使用此查询将这个时间转换为 +30/-30 分钟:

SELECT INTEGER(DATE_ADD(USEC_TO_TIMESTAMP(NOW()), time-30, 'MINUTE')/1000)
SELECT INTEGER(DATE_ADD(USEC_TO_TIMESTAMP(NOW()), time+30, 'MINUTE')/1000)

然后我创建了这个查询:

SELECT * FROM [visits_log_20180115@1516007131839-1516003548120]

我返回一个错误:

非法表ID:visits_log_20180115@-1516007131839-1516003548120

但如果我将其更改为:

SELECT * FROM [visits_log_20180115@-1516007131839-1516003548120]

我在全表扫描后得到一个结果,谷歌教程来自: https://cloud.google.com/bigquery/table-decorators

没有为这种情况提供示例 + 值,我想知道这是语法错误还是我错过了绝对时间范围?

【问题讨论】:

你是否使用分区表? 不,我每天都在使用 fluentD - td-agent 创建一个新表,此查询位于未分区的日表上 我喜欢 FluentD。他们的配置支持 time_partitioning_type。也许您应该重新考虑迁移到分区表。 【参考方案1】:

你应该切换开始和结束,因为目前你的查询是SELECT * FROM [table@end-start],但它应该是SELECT * FROM [table@start-end]

所以,试试

SELECT * FROM [visits_log_20180115@1516003548120-1516007131839]

【讨论】:

以上是关于Bigquery 表装饰器 绝对时间使用的主要内容,如果未能解决你的问题,请参考以下文章

BigQuery、日期分区表和装饰器

Big Query @0 表装饰器

Bigquery LegacySQL 使用特殊装饰器及时的无效快照@0

我们如何删除由表装饰器创建的 bigquery 快照?

是否可以使用“$”装饰器访问标准 SQL 中的 BigQuery 分区?

修复表格装饰器错误后我们应该做些啥不同的事情?