代码之家  ›  专栏  ›  技术社区  ›  Felipe Hoffa

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

  •  2
  • Felipe Hoffa  · 技术社区  · 7 年前

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

    但它使用的是最多每3小时运行一次的计划查询。我的用户期待实时数据,我能做什么?

    1 回复  |  直到 7 年前
        1
  •  3
  •   Felipe Hoffa    7 年前

    2018-10:BigQuery不支持 materialized views ,但您可以使用以下方法:

    • Use the previous solution “具体化”最新数据的摘要,直到运行计划查询的时间为止。
    • 创建一个视图,该视图将物化数据与仅附加表上最新数据的实时视图相结合。

    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
    )
    

    请注意,BigQuery能够使用 TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 2 DAY )