AWS Athena从嵌套的JSON源中展平数据

ebn*_*ius 6 hive amazon-web-services presto amazon-athena

我想从Athena的嵌套JSON创建一个表.这里描述的解决方案使用像hive Openx-JsonSerDe这样的工具尝试镜像SQL语句中的JSON数据.我只想从JSON文件中获取一些字段并创建表.我似乎无法找到任何有关如何做到这一点的资源.

例如JSON文件{"records": [{"a": "data1", "b": "data2", "c": "data3"}]} 我想创建的表只有列ab

jen*_*ter 8

我认为你想要实现的是取消数组将一个数组项转换为一行.

通过正确查询数据结构,可以实现这一点.

表定义:

CREATE external TABLE complex (
   records array<struct<a:string,b:string>>
   )
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
LOCATION 's3://bucket/test1/';
Run Code Online (Sandbox Code Playgroud)

查询:

select record.a,record.b from complex 
cross join UNNEST(complex.records) as t1(record);
Run Code Online (Sandbox Code Playgroud)