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

如何将字符串字段中的嵌套键值对拆分提取为独立数据列

实现方案

你的需求是解析JSON格式的字符串字段,提取顶层键值对为独立列,不需要使用UNNEST函数(UNNEST适用于将数组元素拆分为独立行的场景,和当前需求不匹配),使用SQL内置的JSON解析函数即可实现,不同SQL引擎的实现方式如下:

注意:先确认你的attributes字段是合法JSON格式,你给出的样例中US/EU没有加双引号,属于非法JSON格式,生产环境如果是这种情况需要先做字符串清洗,补全引号后再解析。

1. Hive/Spark SQL 环境

推荐使用json_tuple函数,一次可提取多个键,效率高于逐键调用get_json_object:

SELECT 
  ID,
  json_tuple(attributes, 'category', 'region', 'item_id') AS (category, region, item_id)
FROM 你的表名;

2. BigQuery 环境

使用JSON_VALUE提取标量值,JSON_EXTRACT保留数组原始格式:

SELECT
  ID,
  JSON_VALUE(attributes, '$.category') AS category,
  JSON_VALUE(attributes, '$.region') AS region,
  JSON_EXTRACT(attributes, '$.item_id') AS item_id
FROM 你的表路径;

3. MySQL 8.0+ 环境

使用->>操作符提取值并自动去除外层引号,->操作符保留数组原始格式:

SELECT
  ID,
  attributes->>'$.category' AS category,
  attributes->>'$.region' AS region,
  attributes->'$.item_id' AS item_id
FROM 你的表名;

动态列扩展说明

如果attributes字段的键不固定,需要自动提取所有键作为列,需要编写动态SQL实现:先查询出所有去重的键名,再拼接上述查询逻辑即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 16:57:01