大查询物化视图;使用(内部)连接创建物化视图
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
列)
更具体地说;有人可以帮忙吗;
- 一个;找出我做错了什么
- 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 计算中使用了该列。可能这就是它不受支持的原因。
希望有人能帮助我前进,因为我似乎被困住了。
我已经 documentation 仔细阅读了有关如何创建实体化视图的内容,但是我遇到了这个不清楚的错误;
Materialized view query contains unsupported feature.
我知道错误在连接中,如果我删除它,错误也会消失,但是在查看文档时应该支持内部连接,所以我现在有点迷茫。
背景:我们使用 firestore 及其 BigQuery Extension 将我们的集合放入 bigQuery。出于性能原因,我正在研究物化视图选项。
问题:基本上我想要的是从 (Firestore Bigquery Extension) 更新日志 table 中获取最新文档。 我首先收集每个 document_id 的最新时间戳,然后我想从数据 table.
中检索实际文档(data
列)
更具体地说;有人可以帮忙吗;
- 一个;找出我做错了什么
- 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 计算中使用了该列。可能这就是它不受支持的原因。