Есть ли способ сгладить поле структуры в AWS Athena? - PullRequest
0 голосов
/ 09 мая 2020

Я пытаюсь написать запрос Athena, который позволит мне расширить структуру внутри оператора select.

Допустим, у меня есть таблица my_table, которая выглядит так:

id string,
metadata struct<field1:varchar,field2:int>

Я знаю, что, поместив имя field1 в запрос, я могу извлечь поле из структуры, но мне бы хотелось чего-нибудь более общего, например metadata.*, чтобы схема могла быть абстрактной.

Это может легко сделать с Python и некоторыми библиотеками, но хотел проверить, нет ли чего-нибудь, что можно сделать внутри Афины.

Спасибо!

1 Ответ

0 голосов
/ 09 мая 2020

Я бы хотел, чтобы что-то вроде select results.id, results.scores.* from my_table results работало, но, к сожалению, это не так.

То, что вы просите, называется «обобщенной ссылкой на все поля». Он доступен в Presto с Presto 323 . Вы можете загрузить последнюю версию Presto по адресу https://prestosql.io/download.html.

К сожалению, Athena в настоящее время основана на Presto .172 (выпущена 3 года назад go), поэтому эта функция недоступна там. Пока Афина не будет обновлена, не существует обходного пути, который вы можете применить на уровне SQL. Вы должны компенсировать это в приложении, считывающем данные из Афины. Или вы можете легко развернуть последнюю версию Presto на AWS .

...