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

如何在BigQuery中将整数数组列转换为JSON字典列?

在BigQuery中将整数数组列转换为指定格式的JSON列

需求说明

输入为包含整数数组的列,示例数据:

[1,2,3]
[1,2,3,5,8]

需要转换为JSON类型列,输出格式:

{"1":"1","2":"2","3":"3"}
{"1":"1","2":"2","3":"3","5":"5","8":"8"}

解决方案

可以通过UNNEST展开数组、字符串聚合构造JSON格式,再解析为JSON类型来实现,具体SQL代码如下:

WITH sample_data AS (
  -- 模拟源数据
  SELECT [1,2,3] AS int_arr UNION ALL
  SELECT [1,2,3,5,8] AS int_arr
)
SELECT
  int_arr,
  -- 构造JSON字符串并解析为JSON类型
  SAFE.PARSE_JSON(FORMAT('{%s}', STRING_AGG(FORMAT('"%d":"%d"', elem, elem), ','))) AS target_json_col
FROM sample_data, UNNEST(int_arr) AS elem
GROUP BY int_arr;

代码解释

  • UNNEST(int_arr):将每行的整数数组拆分为多行,每个数组元素单独占一行;
  • FORMAT('"%d":"%d"', elem, elem):把整数元素转换为"数字":"数字"的字符串格式,符合JSON对象的键值要求(JSON键必须是字符串类型);
  • STRING_AGG(..., ','):将同一原始行的所有键值对字符串用逗号连接,形成"1":"1","2":"2",...的片段;
  • FORMAT('{%s}', ...):给连接后的片段包裹大括号,生成完整的JSON对象字符串;
  • SAFE.PARSE_JSON(...):将JSON格式的字符串解析为BigQuery的JSON类型列,SAFE_前缀保证在格式异常时返回NULL而非报错。

注意事项

如果数组为空,该方法会生成{}空JSON对象;如果数组包含重复元素,聚合后会保留重复的键值对(符合JSON语法,若需去重,可在UNNEST后添加DISTINCT elem)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 20:10:02