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

在Big Query中按GUID去重列求和并创建物化视图的方案

解决方案

直接创建满足需求的物化视图即可,无需先创建去重的中间物化视图(BigQuery不支持嵌套物化视图),以下是两种可行的SQL写法:

方法一:先按GUID+DATE分组去重,再按日期求和

CREATE MATERIALIZED VIEW `你的项目ID.你的数据集ID.目标物化视图名`
OPTIONS (
  refresh_interval_minutes = 60 -- 根据业务需求设置刷新间隔,单位为分钟
)
AS
SELECT
  DATE,
  SUM(unique_count) AS COUNT
FROM (
  SELECT
    GUID,
    DATE,
    MAX(COUNT) AS unique_count -- 同一GUID同日期的COUNT值一致,MAX/MIN/ANY_VALUE均可
  FROM `你的项目ID.你的数据集ID.原始表名`
  GROUP BY GUID, DATE
)
GROUP BY DATE;

方法二:用窗口函数过滤重复GUID记录,再按日期求和

CREATE MATERIALIZED VIEW `你的项目ID.你的数据集ID.目标物化视图名`
OPTIONS (
  refresh_interval_minutes = 60 -- 按需设置刷新间隔
)
AS
SELECT
  DATE,
  SUM(COUNT) AS COUNT
FROM (
  SELECT
    COUNT,
    DATE,
    GUID,
    -- 按GUID+DATE分组,给每条记录编号,只保留第一条
    ROW_NUMBER() OVER (PARTITION BY GUID, DATE ORDER BY ID) AS rn
  FROM `你的项目ID.你的数据集ID.原始表名`
)
WHERE rn = 1
GROUP BY DATE;

说明

  • 两种方法都能实现同一GUID仅统计一次COUNT值,最终按日期汇总当日总和的需求;
  • 直接在物化视图中完成去重+求和的逻辑,规避BigQuery不支持嵌套物化视图的限制;
  • 需替换SQL中的你的项目ID、你的数据集ID、原始表名、目标物化视图名为实际信息;
  • refresh_interval_minutes可根据数据更新频率调整,设置为0表示手动刷新。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 06:33:08