Presto - извлечение ключа в массиве - PullRequest
0 голосов
/ 30 января 2019

У меня есть этот пример данных (из Афины)

 SELECT DISTINCT m.key
  FROM (VALUES JSON '{"name":"project1","completed":false}', JSON '{"name":"project1","completed":false}',JSON '{"name":"project1","completed":false}')
     example_table(json_column)
 CROSS JOIN UNNEST (map_keys(CAST(json_column AS map<varchar,json>))) AS m(key);

 WITH dataset AS (
  SELECT '{"name": "Susan Smith",
           "org": "engineering",
           "projects": [{"name":"project1", "completed":false},
           {"name":"project2", "completed":true}]}'
    AS blob
)
select * from dataset

Это сгенерирует следующий вывод.

{"name": "Susan Smith", "org": "engineering", "projects": [{"name":"project1", "completed":false}, {"name":"project2", "completed":true}]}

Я хочу извлечь Key из вывода.

Ожидаемый результат:

output
------
name
org
projects

Может ли кто-нибудь помочь в этом?

обновлено:

отредактировал этот вопрос с правильным JSON.

1 Ответ

0 голосов
/ 03 февраля 2019

Исходя из обсуждения в комментариях, это

map_keys(CAST(json_column AS map<varchar,json>))

необходимо заменить на

map_keys(CAST(CAST(json_column AS JSON) AS map<varchar,json>))
...