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

如何使用AWS Athena提取嵌套JSON花括号中的指定字段值

实现方法

你当前写的查询仅返回了attributeDetails整个嵌套对象,没有进一步钻取到目标字段,根据表结构定义的不同,分两种场景写查询即可:

场景1:建表时已映射JSON嵌套结构

如果你当前执行select ID, address.attributeDetails FROM "TableName"不报错,说明建表时已经通过JSON SerDe把嵌套结构映射成了结构化列,直接通过点号逐级访问字段即可。要提取Attribute4值为RSQ的对应数据,语句如下:

SELECT
  ID,
  address.attributeDetails.Attribute4 AS Attribute4_value
FROM "TableName"
-- 仅需要过滤值为RSQ的记录时保留WHERE条件,全量提取字段可删除
WHERE address.attributeDetails.Attribute4 = 'RSQ'

注意:Athena底层基于Trino(原Presto)引擎,JSON字段名大小写敏感,写查询时字段名要和原始JSON里的key完全一致,比如这里的Attribute4首字母大写,就不能写成小写的attribute4,否则会取不到值。

场景2:原始JSON存在单个字符串列中

如果表没有做嵌套结构映射,整条JSON存储在单个STRING类型的列(常见于原始日志表,列名一般为raw_data、json_payload这类),需要用内置JSON解析函数提取字段,语句如下:

SELECT
  json_extract_scalar(raw_data, '$.ID') AS ID,
  json_extract_scalar(raw_data, '$.address.attributeDetails.Attribute4') AS Attribute4_value
FROM "TableName"
WHERE json_extract_scalar(raw_data, '$.address.attributeDetails.Attribute4') = 'RSQ'

注意事项:

  • 取字符串、数值这类普通标量值用json_extract_scalar,如果要取嵌套对象、数组这类复杂结构才用json_extract,用错函数会返回带转义符的序列化字符串,影响后续处理
  • JSON路径的写法同样严格区分大小写,路径层级和原始JSON结构完全对应即可
系统学习参考方向

不需要找零散的第三方教程,优先看官方公开的文档内容即可:

  • Athena官方文档中「处理JSON数据」章节,覆盖JSON类表的建表配置、不同SerDe的使用差异、嵌套/数组结构的处理规则
  • Athena官方文档中「Trino函数参考-JSON函数」部分,所有JSON处理相关的函数入参、返回值、使用示例都有明确说明
  • Trino官方SQL语法参考,Athena的查询语法几乎完全兼容Trino语法,复杂查询、窗口函数、嵌套类型处理的规则都可以对照参考

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 03:31:01