我们有一组事件(日志类型),我们要连接以获取当前状态.为了进一步提高性能/成本,我们希望创建快照(以便不检查历史记录中的所有事件,但仅限于上一个快照).日志和快照是具有日期后缀的表.
这种方法在BQ中运行正常,但我们需要每次都手动定义查询.有没有办法用参数定义'view'(例如表格范围查询的日期)?或者有什么计划做那样的事情?
我知道在视图中有一些与TABLE_RANGE/QUERY相关的主题(例如在视图中使用TABLE_DATE_RANGE函数).有关于这个主题的新信息吗?
小智 7
现在您可以使用表函数(又名表值函数 - TVF)来实现此目的。它们与视图非常相似,但它们接受参数。我已经测试过,它们确实有助于节省大量成本,同时保持未来的查询简单,因为复杂性位于表函数定义内。它接收一个参数,然后您可以在查询中使用该参数进行过滤。
这个例子来自文档:
CREATE OR REPLACE TABLE FUNCTION mydataset.names_by_year(y INT64)
AS
SELECT year, name, SUM(number) AS total
FROM `bigquery-public-data.usa_names.usa_1910_current`
WHERE year = y
GROUP BY year, name
Run Code Online (Sandbox Code Playgroud)
然后你只需这样查询:
SELECT * FROM mydataset.names_by_year(1950)
Run Code Online (Sandbox Code Playgroud)
更多细节可以参见官方文档。
这是一个很好的功能请求 - 但目前不支持。请在https://code.google.com/p/google-bigquery/issues/list留下更多详细信息,BigQuery 团队非常重视这些请求!