我看到了关于Table Decorators的新闻可通过指定时间间隔或限制来限制查询的数据量。我没有看到任何有关如何在 Big Query UI 中使用表装饰器的示例。下面是我想要运行的示例查询,并且仅查看过去 4 小时内传入的数据。有关如何修改此查询以利用表装饰器的任何提示?
选择
富,
数数(*)
来自[bigtable.201309010000]
按 1 分组
尝试下面的示例后进行编辑
上面的第一个查询扫描 9 月份(截至 9 月 19 日)的 180GB 数据。我希望下面的查询仅扫描指定时间段内传入的数据。在本例中为 4 小时,因此我预计账单约为 1.6GB,而不是 180GB。有没有办法设置 ETL/查询,这样我们就不会因扫描整个表而付费?
选择
富,
数数(*)
来自[bigtable.201309010000@-14400000]
按 1 分组
最佳答案
要使用表装饰器,您可以指定@timestamp或@timestamp-end_time。时间戳可以是负数,在这种情况下它是相对的; end_time 可以为空,在这种情况下它是当前时间。您可以同时使用这两种特殊情况,以获得相对于现在的时间范围。例如[表@-time_in_ms-]。因此,对于您的情况,由于 4 小时是 14400000 毫秒,您可以使用:
SELECT foo, count(*) FROM [dataset.table@-14400000-] GROUP BY 1
这有点令人困惑,我们打算尽快发布更好的文档和示例。
关于google-bigquery - 在 Big Query Web 界面上使用表装饰器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18905506/