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

如何在BigQuery中移除嵌套REPEATED结构中的指定字段?

解决BigQuery中移除嵌套重复记录字段的问题

我明白你现在遇到的问题了——要把重复RECORD类型Person里的Add字段去掉,但之前的写法没生效对吧?咱们来调整一下SQL语句就能搞定。

问题分析

你的原表结构里,Person是REPEATED模式的RECORD,里面包含Name和嵌套的Add字段。要保留Person的重复特性,只移除其中的Add,需要对数组里的每个元素单独处理,而不是直接用子查询的方式。

正确的SQL写法

CREATE TABLE `project_id.dataset.new_table_name` AS
SELECT * REPLACE(
  ARRAY(SELECT AS STRUCT p.* EXCEPT(Add) FROM UNNEST(Person) p) AS Person
) FROM `project_id.dataset.table_name`;

代码解释

  1. 先用UNNEST(Person)把重复的Person数组拆分成单个的RECORD元素;
  2. 对每个元素p使用p.* EXCEPT(Add),保留除了Add之外的所有字段(也就是Name);
  3. 再用ARRAY()把处理后的单个元素重新组合成REPEATED模式的RECORD;
  4. 最后通过* REPLACE(...)替换原表中的Person字段。

执行这段代码后,新表的结构就会和你期望的一致:Person仍然是REPEATED的RECORD,里面只保留Name字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 06:49:53