我想要“实时物化视图”,以及任何行的最新信息

Fel*_*ffa 5 google-bigquery

我将此解决方案视为物化视图的替代方案:

但它使用最多每 3 小时运行一次的预定查询。我的用户期待实时数据,我该怎么办?

Fel*_*ffa 3

2018-10:BigQuery 不支持物化视图,但您可以使用以下方法:

  • 使用以前的解决方案“具体化”最新数据的摘要,直到计划查询运行的时间。
  • 创建一个视图,将具体化数据与仅附加表上的最新数据的实时视图相结合。

代码如下所示:

CREATE OR REPLACE VIEW `wikipedia_vt.just_latest_rows_live` AS

SELECT latest_row.* 
FROM (
  SELECT ARRAY_AGG(a ORDER BY datehour DESC LIMIT 1)[OFFSET(0)] latest_row
  FROM (
    SELECT * FROM `fh-bigquery.wikipedia_vt.just_latest_rows`
    # previously "materialized" results
    UNION ALL 
    SELECT * FROM `fh-bigquery.wikipedia_v3.pageviews_2018`
    # append-only table, source of truth
    WHERE datehour > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 2 DAY )

  ) a
  GROUP BY title
)
Run Code Online (Sandbox Code Playgroud)

请注意,BigQuery 能够TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 2 DAY )有效地修剪分区。