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

如何在Google BigQuery中提取并展开嵌套JSON字段?

BigQuery中JSON字段提取与嵌套元素展开方案

一、提取单个JSON字段

BigQuery用JSON_EXTRACT_SCALAR提取字符串/数值类型的JSON字段,JSON_EXTRACT提取JSON对象或数组。

假设你的表jsonsenthil.json.tvjson1有一个存储JSON的字段(比如json_content),示例JSON结构如下:

{
  "show_id": "SH001",
  "show_name": "Tech Talk",
  "release_year": 2024
}

提取字段的SQL代码:

SELECT
  JSON_EXTRACT_SCALAR(json_content, '$.show_id') AS show_id,
  JSON_EXTRACT_SCALAR(json_content, '$.show_name') AS show_name,
  CAST(JSON_EXTRACT_SCALAR(json_content, '$.release_year') AS INT64) AS release_year
FROM `jsonsenthil.json.tvjson1`

二、展开嵌套数组元素

如果JSON包含嵌套数组,结合UNNEST和JSON_EXTRACT_ARRAY就能展开数组元素。

示例嵌套JSON结构:

{
  "show_id": "SH001",
  "show_name": "Tech Talk",
  "episodes": [
    {"episode_id": "EP001", "title": "Intro to BigQuery", "duration": 30},
    {"episode_id": "EP002", "title": "JSON Processing", "duration": 25}
  ]
}

展开嵌套数组的SQL代码:

SELECT
  JSON_EXTRACT_SCALAR(json_content, '$.show_id') AS show_id,
  JSON_EXTRACT_SCALAR(json_content, '$.show_name') AS show_name,
  JSON_EXTRACT_SCALAR(episode, '$.episode_id') AS episode_id,
  JSON_EXTRACT_SCALAR(episode, '$.title') AS episode_title,
  CAST(JSON_EXTRACT_SCALAR(episode, '$.duration') AS INT64) AS episode_duration
FROM `jsonsenthil.json.tvjson1`,
UNNEST(JSON_EXTRACT_ARRAY(json_content, '$.episodes')) AS episode

常见问题说明

SQL Server里的OPENJSON对应BigQuery的UNNEST(JSON_EXTRACT_ARRAY())组合,别直接沿用SQL Server语法。如果你的无效代码用了类似OPENJSON的写法,替换成上述BigQuery专属语法即可。

内容的提问来源于stack exchange,提问作者Senthil P Nathan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 16:40:00