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

如何在BigQuery中将JSON键值对拆分为键和值列?

BigQuery 动态解析JSON列为键值对

针对需要将动态JSON列(键数量不固定)解析为key和value两列的需求,以下提供两种实现方案:

一、常规解法(无需依赖外部UDF)

利用OBJECT_KEYS获取所有键名,结合UNNEST和JSON_EXTRACT_ARRAY匹配对应的值:

WITH sample_data AS (
  SELECT PARSE_JSON('{"a": [1,2,3], "b":[4,5,6]}') AS key_values
)
SELECT
  key,
  JSON_EXTRACT_ARRAY(key_values, CONCAT('$.', key)) AS value
FROM sample_data,
UNNEST(OBJECT_KEYS(key_values)) AS key

二、使用BigQuery新增的bqutil函数

借助bqutil.fn.json_extract_keys提取所有键名数组,bqutil.fn.json_extract_values提取对应的值数组,通过UNNEST将两个数组按位置关联:

WITH sample_data AS (
  SELECT PARSE_JSON('{"a": [1,2,3], "b":[4,5,6]}') AS key_values
)
SELECT
  keys AS key,
  values AS value
FROM sample_data,
UNNEST(bqutil.fn.json_extract_keys(key_values)) AS keys
WITH OFFSET pos
JOIN UNNEST(bqutil.fn.json_extract_values(key_values)) AS values
WITH OFFSET pos
USING(pos)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 22:57:02