Presto возвращает все имена полей столбца типа ROW - PullRequest
0 голосов
/ 10 апреля 2020

У меня есть таблица со столбцом типа ROW, которая выглядит следующим образом:

struct<something:double,something_else:double,another_thing:boolean>

Итак, фактическая строка этого столбца в таблице выглядит следующим образом:

{ "something":1.0, "something_else":2.0, "another_thing":false }

Я хотел бы выбрать все имена полей (в этом примере something, something_else, another_thing) либо в виде массива, либо в виде строк в наборе результатов.

Например, предполагая таблицу t и имя столбца из things Я пробовал:

select MAP_FROM_ENTRIES(things) from t limit 1

Это приводит к ошибке "неожиданные параметры". То же самое касается MULTIMAP_FROM_ENTRIES

Я также пытался

cast(things as JSON) from t limit 1

Это дает мне значения полей, а не имена.

Кроме того, я попытался использовать UNNEST(), но это тоже не кажется правильным.

Использование LIMIT 1 кажется очень хакерским, и, поскольку имена встроены в саму таблицу, я подумал, что с помощью SHOW COLUMNS или DESCRIBE OUTPUT можно сделать это , но мне не повезло.

Кажется, это должна быть довольно простая операция ... что мне не хватает?

РЕДАКТИРОВАТЬ: Обратите внимание, что я предполагаю, что я не всегда знаю все имена полей ранее, т.е. я не хочу жестко кодировать имена полей

...