jeudi 9 avril 2020

Presto return all field names of a ROW type column

I have a table with a ROW type column that looks like this:

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

So, an actual row of this column in the table looks like this:

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

I would like to select all of the field names (in this example, something, something_else, another_thing) either as an array or as rows in the results set.

For example, assuming a table t and a column name of things I've tried:

select MAP_FROM_ENTRIES(things) from t limit 1

This gives an "unexpected parameters" error. Same goes for MULTIMAP_FROM_ENTRIES

I also tried

cast(things as JSON) from t limit 1

This gives me the field values rather than the names.

Additionally, I tried using UNNEST() but this doesn't seem right either.

Using LIMIT 1 seems very hack-y and since the names are built in to the table itself I thought using SHOW COLUMNS or DESCRIBE OUTPUT might be able to do this, but I've had no luck.

This seems like it should be a rather simple operation...what am I missing?





Aucun commentaire:

Enregistrer un commentaire