Presto - извлечение ключа в массиве
У меня есть этот образец данных (из Афины)
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}]}
Я хочу извлечь ключ из вывода.
Ожидаемый результат:
output
------
name
org
projects
Может ли кто-нибудь помочь в этом?
обновлено:
отредактировал этот вопрос с правильным JSON.
1 ответ
Основываясь на обсуждении в комментариях, это
map_keys(CAST(json_column AS map<varchar,json>))
необходимо заменить на
map_keys(CAST(CAST(json_column AS JSON) AS map<varchar,json>))