У меня есть столбец JSON j
, например:
{'a': 2, 'b': {'b1': 3, 'b2': 5}}
{'c': 3, 'a': 5}
{'d': 1, 'c': 7}
Как я могу получить от Presto все отдельные (высокоуровневые) имена ключей? Т.е. Мне что-то нравится
select distinct foo(j)
Возвращать
['a', 'b', 'c', 'd']
(обратите внимание, что в этом случае я не слишком озабочен вложенными ключами)
Документация Presto не имеет функции, которая явно соответствует требованиям. Единственное, что выглядит близко, - это упоминание синтаксиса JSONPath, но даже это кажется неточным. По крайней мере одно из следующего должно возвращать что-то, но у меня все не удалось в Presto:
select json_extract(j, '$.*')
select json_extract(j, '$..*')
select json_extract(j, '$[*]')
select json_extract(j, '*')
select json_extract(j, '..*')
select json_extract(j, '$*.*')
Кроме того, я подозреваю, что это вернет значения, а не ключи из j
(т.е. [2, 3, 5, 3, 5, 1, 7]
).