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

Posted

技术标签:

【中文标题】我想要“实时物化视图”,其中包含任何行的最新信息【英文标题】:I want "live materialized views", with the latest info for any row 【发布时间】:2018-10-26 00:07:16 【问题描述】:

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

I want a "materialized view" of the latest records

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

【问题讨论】:

【参考方案1】:

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 ) 有效地修剪分区。

【讨论】:

以上是关于我想要“实时物化视图”,其中包含任何行的最新信息的主要内容,如果未能解决你的问题,请参考以下文章

构建自包含类

javafx tableview 检测任何行的任何更改,包括添加新行

DDoS高防如何保护物联网安全

由ID链接的多个表

SQL NOT BETWEEN 查询

入门物联网,嵌入式是关键