如何在Athena中提取嵌套JSON内的id字段?
Athena提取嵌套JSON中id字段的正确方法
直接使用多层JSON路径(推荐写法)
Athena的JSON函数支持直接指定多层嵌套的JSON路径,无需嵌套调用函数,一步到位提取目标字段:
-- 提取字符串类型的id JSON_EXTRACT_SCALAR(db.column_name, '$.template.id') AS id -- 若需要整数类型的id,可添加CAST转换 CAST(JSON_EXTRACT_SCALAR(db.column_name, '$.template.id') AS INTEGER) AS id
嵌套调用函数的正确写法(仅作参考)
如果一定要用嵌套调用的方式,需注意内层路径的规范:通过JSON_EXTRACT取出template对应的JSON对象后,内层仍需使用完整的相对路径。不过这种写法冗余,不如直接用多层路径高效:
JSON_EXTRACT_SCALAR(JSON_EXTRACT(db.column_name, '$.template'), '$.id') AS id
常见问题排查
你之前的写法语法本身正确,若仍失败,优先确认db.column_name存储的是字符串格式的JSON;如果字段是JSON类型,可直接用点符号访问:column_name.template.id。
内容的提问来源于stack exchange,提问作者Newton8989
相关产品推荐
相关产品推荐

