如何使用Presto识别指定JSON示例中的顶层唯一键?
Presto提取JSON顶层唯一键的解决方案
完整SQL实现
WITH dataset AS ( SELECT '{\"name\": \"Susan Smith\", \"org\": \"engineering\", \"projects\": [{\"name\":\"project1\", \"completed\":false}, {\"name\":\"project2\", \"completed\":true}]}' AS users ) SELECT DISTINCT key AS Column FROM dataset, UNNEST(map_keys(cast(json_parse(users) AS map(varchar, json)))) AS t(key);
步骤解释
json_parse(users):将字符串格式的JSON数据解析为JSON对象cast(json_parse(users) AS map(varchar, json)):把JSON对象转换为map(varchar, json)类型,因为map_keys函数仅支持MAP类型输入map_keys(...):提取MAP结构中的所有键,返回一个字符串数组UNNEST(...):将数组展开为独立的行记录DISTINCT:保证输出的键唯一,适配多JSON记录场景,单条记录时可省略
输出结果
Column name org projects
内容的提问来源于stack exchange,提问作者oneday
相关产品推荐
相关产品推荐

