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

在BigQuery中合并两张结构相同的嵌套数组表(无需使用UNNEST函数)

在BigQuery中合并两张结构相同的嵌套数组表(无需使用UNNEST函数)

看起来你需要合并两张结构一致的嵌套表,优先保留第一张表的重复key数据,同时因为数据量巨大,不想用UNNEST来避免性能损耗对吧?我给你一个简单高效的方案:

WITH combined_data AS (
  SELECT *, 1 AS source_priority FROM `your-project.dataset.table1`
  UNION ALL
  SELECT *, 2 AS source_priority FROM `your-project.dataset.table2`
)
SELECT key, A
FROM combined_data
QUALIFY ROW_NUMBER() OVER (PARTITION BY key ORDER BY source_priority) = 1
-- 如果你需要和示例里的输出顺序一致,可以调整排序规则,比如:
-- ORDER BY CASE key WHEN 1 THEN 1 WHEN 3 THEN 2 WHEN 4 THEN 3 WHEN 5 THEN 4 WHEN 6 THEN 5 WHEN 2 THEN 6 END

方案说明:

  • 先用UNION ALL把两张表合并,同时给Table1标记最高优先级(1),Table2标记次优先级(2),确保重复key时优先保留Table1的记录
  • 借助QUALIFY和ROW_NUMBER()窗口函数,按key分区,同一个key下按优先级排序,只保留行号为1的记录——也就是每个key仅保留优先级最高的那条数据
  • 全程不需要使用UNNEST,所有操作基于整行和嵌套字段直接处理,完美适配大数据量场景,避免了展开嵌套数组带来的性能损耗

如果你不需要特定的输出排序,直接去掉最后的ORDER BY部分即可,BigQuery会按最优的方式返回结果。

备注:内容来源于stack exchange,提问作者Hbaieb Ahmed

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 11:17:59