如何在Athena中提取含动态键的JSON内key2的内容?
Athena提取动态键下的JSON内容
针对info表data列中key1下键名动态未知的JSON结构,可通过以下方法提取目标key2的内容:
方法一:直接取值(适用于key1下仅一个动态键的场景)
SELECT json_extract_scalar( map_values(json_parse(data)->'key1')[1], '$[0].key2' ) AS target_content FROM info;
方法二:展开数组(兼容多动态键场景,结果仍为1:1)
SELECT json_extract_scalar(elem, '$[0].key2') AS target_content FROM info, UNNEST(map_values(json_parse(data)->'key1')) AS t(elem);
核心函数说明:
json_parse(data)->'key1':解析data列的JSON,定位到key1对应的对象map_values(...):将对象的所有值转换为数组,忽略动态键名UNNEST(...):将数组展开为行(若仅一个动态键则仅生成一行)json_extract_scalar(..., '$[0].key2'):从目标数组的第一个元素中提取key2的字符串值
内容的提问来源于stack exchange,提问作者Victor Leprince
相关产品推荐
相关产品推荐

