大查询物化视图;使用(内部)连接创建物化视图

big query materialized view; create a materialized view using an (inner) join

希望有人能帮助我前进,因为我似乎被困住了。

我已经 documentation 仔细阅读了有关如何创建实体化视图的内容,但是我遇到了这个不清楚的错误;

Materialized view query contains unsupported feature.

我知道错误在连接中,如果我删除它,错误也会消失,但是在查看文档时应该支持内部连接,所以我现在有点迷茫。

背景:我们使用 firestore 及其 BigQuery Extension 将我们的集合放入 bigQuery。出于性能原因,我正在研究物化视图选项。

问题:基本上我想要的是从 (Firestore Bigquery Extension) 更新日志 table 中获取最新文档。 我首先收集每个 document_id 的最新时间戳,然后我想从数据 table.

中检索实际文档(data 列)

更具体地说;有人可以帮忙吗;

  1. 一个;找出我做错了什么
  2. B;或者告诉我如何在我所在的位置创建物化视图;
    • 始终可以访问最新的文档版本
    • 从结果集中排除已删除的文档 (operation = 'DELETE`)

非常感谢所有帮助!


CREATE OR REPLACE MATERIALIZED VIEW `XXX.XXX.view_name` AS
  WITH `ids` AS (
    SELECT
      `document_name`,
      MAX(`timestamp`) AS `timestamp`,
    FROM `XXX.XXX.id_table`
    GROUP BY `document_name`
  )

  SELECT
    `d`.`data`
  FROM `XXX.XXX.data_table` AS `d`
  INNER JOIN `ids` AS `i` ON (
    `i`.`timestamp` = `d`.`timestamp`
    `i`.`document_name` = `d`.`document_name`
  )
  WHERE `operation` != 'DELETE'
;

这是我基于当前文档的猜测: Document 说: “实体化视图查询中的聚合必须是输出。不支持基于聚合值的计算或过滤。”

在您的“WITH”子句中,您使用了 MAX(timestamp) 聚合函数,并且您在连接的 ON 计算中使用了该列。可能这就是它不受支持的原因。