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

如何在BigQuery中修改Array of Structs的指定属性值?

在BigQuery中修改数组结构体的指定属性值

原代码的错误在于试图通过FOR循环直接修改数组属性,BigQuery中的数组属于不可变类型,无法直接在循环中修改数组内的结构体元素,需要通过重新构造数组的方式实现需求。

以下是正确的实现代码:

DECLARE catalog ARRAY<
    STRUCT<
      tableName STRING,
      type STRING,
      age STRING
    >
>;
SET catalog = [
  ('TABLE_ONE', '', '5'),
  ('TABLE_TWO', '', '6'),
  ('TABLE_THREE', '', '1')
];

-- 重新构造数组,修改每个结构体的type字段
SET catalog = ARRAY(
  SELECT AS STRUCT
    tableName,
    CONCAT('TEST_', age) AS type,
    age
  FROM UNNEST(catalog)
);

-- 验证修改后的结果
SELECT catalog;

代码逻辑说明

  1. 使用UNNEST(catalog)将数组展开为行数据,每行对应一个结构体元素;
  2. 通过SELECT AS STRUCT重新构造每个结构体:保留原有的tableName和age字段,将type字段替换为TEST_与age拼接的结果;
  3. 用ARRAY()将处理后的行重新聚合为数组,赋值回原变量catalog。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 18:31:01