如何为Json Array格式创建表Athena(AWS)?
示例JSON格式:
Col_status Col_Location Min(Col_NUM) count(Col_NUM)
---------- ------------- ------------- --------------
ON AAA 1 2
OFF AAA 3 1
ON BBB 4 2
ON CCC 6 1
ON BBB 7 1
OFF AAA 9 2
我想获得以下输出格式:
enter image description here
我试图根据这个网站解决问题 enter link description here
答案 0 :(得分:3)
从您的示例JSON派生,您可以创建下表。
create external table test(
Tapes array<struct<
Status:string,
Used:string,
Barcode:string,
Gateway:string,
UsedGB:string,
Date:string,
SizeGB:string>>
) ROW FORMAT serde 'org.openx.data.jsonserde.JsonSerDe'
LOCATION 's3://bucket/test'
使用该表,您可以通过以下方式查询所有数组元素。
select t1.* from test
cross join UNNEST(test.Tapes) as t1
答案 1 :(得分:0)
感谢您的回复
现在,我知道这个问题的原因是查询 我认为这是一个示例SQL查询
昨天,我在
下创建了表格语法 CREATE external TABLE monlyreport (
Tapes array<struct< Status:string,
Used:double,
Barcode:string,
SizeGB:double,
UsedGB:double,
Date:date >>
)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
LOCATION 's3://bucket/test';
和预览表获取输出
tapes
[{status=AVAILABLE, used=0.0, barcode=TEST5257F7, sizegb=107.0, usedgb=0.0, date=null}, {status=AVAILABLE, used=0.0, barcode=TEST5257F7, sizegb=107.0, usedgb=0.0, date=null}]
我尝试查询,但它不起作用
现在,我理解查询此问题
select n.status,n.used,n.barcode,n.gateway,n.usedgb,n.date,n.sizegb from test
cross join UNNEST(test.Tapes) as t (n)
非常感谢