Athena 嵌套 Json 提取物

问题描述 投票:0回答:1

我在 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
sql json amazon-athena presto trino
1个回答
0
投票

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;
© www.soinside.com 2019 - 2024. All rights reserved.