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

BigQuery中如何将嵌套JSON数组展开为独立列?

解决方案:将JSON对象展开为独立列

你不需要用子查询绕弯子,直接在主查询里用JSON提取函数从原数据中获取字段即可;如果一定要保留原查询结构,也可以通过子查询的正确写法实现字段提取。

方法1:直接从原数据提取(推荐)

跳过单独提取items字段的步骤,直接从dv对象中获取嵌套的amount、status、code:

SELECT 
  JSON_VALUE(dv, '$.items.amount') AS amount,
  JSON_VALUE(dv, '$.items.status') AS status,
  JSON_VALUE(dv, '$.items.code') AS code
FROM mytable t
CROSS JOIN UNNEST(JSON_QUERY_ARRAY(t.jsonish_field)) AS dv
WHERE t.type = 'adjustment';

方法2:用子查询包裹原查询

将你原来的查询作为子查询,在外层语句中从items字段提取对应值:

SELECT 
  JSON_VALUE(items, '$.amount') AS amount,
  JSON_VALUE(items, '$.status') AS status,
  JSON_VALUE(items, '$.code') AS code
FROM (
  -- 原查询作为子查询
  SELECT 
    JSON_QUERY_ARRAY(dv,'$.items') AS items
  FROM mytable t
  CROSS JOIN UNNEST(JSON_QUERY_ARRAY(t.jsonish_field)) AS dv
  WHERE t.type = 'adjustment'
) AS sub;

注:如果你的数据库JSON提取函数不是JSON_VALUE,可替换为对应数据库的函数(比如JSON_EXTRACT_SCALAR、JSON_UNQUOTE(JSON_EXTRACT(...))等),核心是从JSON对象中提取指定路径的标量值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 03:52:32