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

PySpark中如何将JSON字段的键及对应数组值完全展开为多行

实现方案

你需要在json_each拆出键值对后,再对数组类型的值调用json_array_elements做二次展开即可,完整查询语句如下:

SELECT 
  json_each.key AS "Key",
  arr.elements AS "Value"
FROM 
  your_table,
  json_each(xref_json::json),
  json_array_elements(json_each.value) AS arr(elements);

逻辑说明

  • 第一层json_each(xref_json::json)已经实现了将JSON的每个键和对应的数组拆分为独立行,此时返回的value字段就是你当前拿到的完整数组
  • 第二层json_array_elements接收数组类型输入,会将数组的每个元素拆为单独的行,和上层的键关联后即可得到「键+单个数组元素」的一对一结构

可选优化

如果你需要返回的Value是不带双引号的纯字符串,可以将json_array_elements替换为json_array_elements_text:

SELECT 
  json_each.key AS "Key",
  arr.elements AS "Value"
FROM 
  your_table,
  json_each(xref_json::json),
  json_array_elements_text(json_each.value) AS arr(elements);

效果示例

针对你给出的两条测试数据,执行上述语句后会返回如下结构的结果:

KeyValue
XXX123
XXX456
YYY246
YYY135
XXX123
XXX456
YYY246
YYY135
ZZZ333
ZZZ444

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 19:00:00