You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在BigQuery中创建获取供应商最新记录的Materialized View?

实现仅保留最新供应商记录的增量物化视图方案

针对你的场景(基表仅追加数据,需保留每个Supplier_ID的最新记录),可以用QUALIFY子句+窗口函数的方案,既规避增量物化视图的单表引用限制,又不用重复调用聚合函数,适配多字段场景:

核心SQL语句

CREATE MATERIALIZED VIEW test_dataset.supplier_latest_mv
OPTIONS (
  refresh_interval_minutes = 60 -- 根据你的需求调整刷新间隔
)
AS
SELECT
  Supplier_ID,
  Supplier_Name,
  Supplier_Contact,
  Last_Modified
  -- 其他需要保留的字段直接在这里追加即可
FROM test_dataset.test_table
QUALIFY ROW_NUMBER() OVER (
  PARTITION BY Supplier_ID
  ORDER BY Last_Modified DESC
) = 1;

方案优势

  • 仅单次引用基表,完全符合增量物化视图“不能重复引用同一张表”的限制,不会触发报错。
  • 逻辑直观:通过ROW_NUMBER()按Supplier_ID分组,按Last_Modified倒序排序,直接筛选出每组的第一条(最新)记录。
  • 适配多字段场景:不管是6列还是更多,只要在SELECT里列出所有需要保留的字段就行,不需要修改窗口函数部分,比ARRAY_AGG简洁太多。

特殊情况处理

如果存在同一Supplier_ID在同一时间有多条记录的情况,可以在排序规则里加一个唯一字段(比如数据插入时的自增ID)来确保结果稳定:

QUALIFY ROW_NUMBER() OVER (
  PARTITION BY Supplier_ID
  ORDER BY Last_Modified DESC, Insert_ID DESC -- Insert_ID为自增唯一字段
) = 1;

内容的提问来源于stack exchange,提问作者Ashok KS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 18:05:21