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

如何在BigQuery中解析无数组结构的嵌套JSON?

在BigQuery中解析字符串化JSON并展开为结构化表

假设你的原表为your_dataset.your_table,存储字符串化JSON的列名为json_column,可以通过以下SQL实现需求:

SELECT
  id,
  CAST(JSON_EXTRACT_SCALAR(json_column, CONCAT('$.', id, '.age')) AS INT64) AS age,
  JSON_EXTRACT_SCALAR(json_column, CONCAT('$.', id, '.size')) AS size
FROM
  your_dataset.your_table,
  UNNEST(JSON_KEYS(json_column)) AS id

代码说明:

  • JSON_KEYS(json_column):提取JSON对象中的所有顶级键(即示例中的id_1、id_2),返回字符串数组。
  • UNNEST(...) AS id:将数组展开为多行,每行对应一个独立的id值。
  • JSON_EXTRACT_SCALAR(json_column, CONCAT('$.', id, '.age')):根据当前id拼接JSON路径,提取对应的age字段值,SCALAR确保返回单个字符串值,再通过CAST转换为整数类型。
  • JSON_EXTRACT_SCALAR(json_column, CONCAT('$.', id, '.size')):同理提取size字段值。

测试示例:

如果需要快速验证,可以用WITH子句模拟原表数据:

WITH sample_data AS (
  SELECT '''{
    "id_1": {
        "age": "10",
        "size": "M"
    },
    "id_2": {
        "age": "20",
        "size": "L"
    }
  }''' AS json_column
)
SELECT
  id,
  CAST(JSON_EXTRACT_SCALAR(json_column, CONCAT('$.', id, '.age')) AS INT64) AS age,
  JSON_EXTRACT_SCALAR(json_column, CONCAT('$.', id, '.size')) AS size
FROM
  sample_data,
  UNNEST(JSON_KEYS(json_column)) AS id

运行后会得到你需要的结构化表结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 08:55:12