我在 Athena 中有这个嵌套 json
{ "template": {"name":"User Name", "id": 10001}}
Output :- {"name":"User Name", "id": 10001}
我正在尝试从内部 json 中提取 id ,到目前为止我已经尝试过 json extract 和 json extract scaler 但两者都不适用于嵌套 JSON
这样我们就可以访问模板json
JSON_EXTRACT(db.column_name, '$.template') AS template
我正在尝试嵌套 json 来访问 id 字段,但它无法访问
json_extract_scalar(json_extract(db.column_name, '$.template'), '$.id') as id
json_extract(json_extract(db.column_name, '$.template'), '$.id') as id
TBH 您的两次尝试都对我有用,但一般来说您应该能够通过提供完整路径来访问它(不需要嵌套提取):
-- sample data
with dataset(json_col) as(
values ('{ "template": {"name":"User Name", "id": 10001}}' )
)
-- query
select json_extract_scalar(json_col, '$.template.id') id
from dataset;
输出:
id
-------
10001
(1 row)
可能您有一些错误的行,因此您可以使用
try
,如果出现错误,它将返回 null:
-- query
select try(json_extract_scalar(json_col, '$.template.id')) id
from dataset;