Запрос структуры вложенного массива Athena - PullRequest
0 голосов
/ 20 июня 2020

Пожалуйста, попросите вашу помощь.

У меня есть столбец в Афине следующего типа:

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}]

Как я могу запросить этот столбец, если мне нужно все recvalue для этой вложенной структуры в athena с каждым столбцом

В качестве вывода я должен получить значение рекомендации в каждом столбце:

recommendation0             recommendation1               recommendation2   recommendation3 
0.8999999999999999 18.218999999999998   33.6     88.72002

1 Ответ

0 голосов
/ 21 июня 2020

Предполагая, что в массивах всегда ровно четыре элемента, и они всегда находятся в правильном порядке, вы можете просто выбрать элементы из массива следующим образом:

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)

Однако в вашем примере строки пять элементов, а в выходном примере - четыре, и порядок тоже не совпадает. Возможно, вы сможете уточнить свой вопрос, если вышеперечисленное не решит вашу проблему?

...