AWS Athena解析嵌套JSON数组

pdtvr36n  于 2023-10-21  发布在  其他
关注(0)|答案(1)|浏览(115)

我有这样结构的JSON文件,我需要使用AWS Athena查询这个JSON,以提取myarray数组中的某些值。
最终结果应为userIdentifier,且仅当title= zz时才为enabled
在这种情况下,

useridentifier, enabled 
xyz-123, true

JSON

{
   "userIdentifier":"xyz-123",
   "myarray":[
      {
         "code":"split",
         "requiresinput":false,
         "categorycode":"strictly_necessary",
         "originalrequiresinput":false,
         "title":"xx",
         "enabled":false
      },
      {
         "code":"zz",
         "requiresinput":false,
         "categorycode":"zz",
         "originalrequiresinput":false,
         "title":"zz",
         "enabled":true
      }
   ]
}
wsewodh2

wsewodh21#

解决了这个问题,所以分享给别人。

  • 设置一个指向s3文件夹的Glue表
  • 的列
  • set useridentifier - varchar(1000)
  • 对于myArray列-使用Array数据类型,然后使用字符串子类型

对于查询,请使用UNNEST命令。

with cte1 AS
(
SELECT 
   
    useridentifier
    ,json_extract_scalar(source, '$.enabled') enabled
    ,"$path" pth
FROM "testdb"."test" 
CROSS JOIN UNNEST("testdb"."test"."myArray") AS t1 (source)
where json_extract_scalar(source, '$.title') = 'zz'
)
select 
    
    useridentifier
    ,enabled
    , pth
from cte1 c

相关问题