雅典娜嵌套数组结构查询

时间:2020-06-20 16:16:51

标签: amazon-athena

请寻求帮助。

我在Athena中有一栏,其类型如下:

array<struct<addedtitle:string,addedvalue:double,keytitle:string,key:string,recvalue:double,unit:string,isbalanced:boolean

例如-行之一是:

[{addedtitle=Sodium Carbonate, addedvalue=null, keytitle=Increase PH, key=p9, recvalue=0.8999999999999999, unit=lbs, isbalanced=null}, {addedtitle=Soduim Hypochlorite (12%), addedvalue=15.0, keytitle=Increase Chlorine, key=p8, recvalue=18.218999999999998, unit=fl oz, isbalanced=null}, {addedtitle=Sodium Bicarbonate, addedvalue=32.0, keytitle=Increase Alkalinity, key=p10, recvalue=33.6, unit=oz, isbalanced=null}, {addedtitle=Calcium Chloride (100%), addedvalue=86.0, keytitle=Increase Calcium Hardness, key=p6, recvalue=88.72002, unit=oz, isbalanced=null}, {addedtitle=Cyanuric Acid, addedvalue=10.0, keytitle=Increase Cyanuric Acid, key=p11, recvalue=11.7, unit=oz, isbalanced=null}]

如果我要在雅典娜的每一列中使用此嵌套结构的所有累加值,如何查询此列

作为输出,我应该在每一列中获得推荐值:

recommendation0             recommendation1               recommendation2   recommendation3 
0.8999999999999999 18.218999999999998   33.6     88.72002

1 个答案:

答案 0 :(得分:0)

假设数组中始终有四个元素,并且它们始终处于正确的顺序,则可以像这样从数组中挑选元素:

SELECT
  the_array_column[1].recvalue AS recommendation0,
  the_array_column[2].recvalue AS recommendation1,
  the_array_column[3].recvalue AS recommendation2,
  the_array_column[4].recvalue AS recommendation3
FROM my_table

(您没有提供完整的架构,因此我临时使用了表和列的名称-还请注意数组索引从1开始)

但是,您的行示例包含五个元素,而输出示例包含四个元素,并且顺序也不匹配。如果以上方法不能解决您的问题,也许您可​​以澄清您的问题?