У меня есть таблица со столбцом типа 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
можно сделать это , но мне не повезло.
Кажется, это должна быть довольно простая операция ... что мне не хватает?
РЕДАКТИРОВАТЬ: Обратите внимание, что я предполагаю, что я не всегда знаю все имена полей ранее, т.е. я не хочу жестко кодировать имена полей