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

使用BigQuery的ARRAY_AGG(STRUCT)合并3张表生成无重复主数据集

解决多表关联聚合时的重复问题

直接同时关联主表和两张子表会触发笛卡尔积:比如一个商品对应2条交易记录、3条位置记录,关联后会生成2×3=6条重复组合数据,最终聚合出来的交易和位置集合里会塞满重复项。

正确做法是先分别对交易表、位置表按ItemCode预聚合,再和主表关联,彻底避免子表间的交叉重复:

WITH 预聚合交易数据 AS (
  SELECT
    ItemCode,
    ARRAY_AGG(STRUCT(Date, Quanitty)) AS Transactions
  FROM Transactions
  GROUP BY ItemCode
),
预聚合位置数据 AS (
  SELECT
    ItemCode,
    ARRAY_AGG(STRUCT(WHBin, Serial, Qty)) AS Locations
  FROM Location  -- 注意:你之前写的关联Transactions l是笔误,应该是位置表
  GROUP BY ItemCode
)
SELECT
  i.ItemCode,
  i.Manuf AS Manufacturer,
  i.ItemName AS Model,
  i.QtyonOrder AS `Qty on Order`,
  -- 用COALESCE确保没有数据时返回空数组,避免NULL
  COALESCE(预聚合交易数据.Transactions, []) AS Transactions,
  COALESCE(预聚合位置数据.Locations, []) AS Locations
FROM ItemMasterData i
LEFT JOIN 预聚合交易数据 ON i.ItemCode = 预聚合交易数据.ItemCode
LEFT JOIN 预聚合位置数据 ON i.ItemCode = 预聚合位置数据.ItemCode;

这样处理后,每个商品的交易集合和位置集合都是从各自子表独立聚合而来,不会互相干扰产生重复数据,完全符合你需要的嵌套结构,适配Looker Studio的展示需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 18:46:43