如何在Presto(含Amazon Athena)中按指定键提取对应值
在Amazon Athena(Presto)中提取匹配字符串列的Map值
你可以直接利用Presto的Map下标访问语法,用字符串列的值作为键,从Map列中提取对应的数值。如果Map中不存在匹配的键,结果会返回NULL,可以用coalesce函数指定默认值来处理这种情况。
示例查询
假设你的表名为your_table,字符串列是target_key,Map列是value_map(类型为map(varchar, double)),查询语句如下:
SELECT target_key, value_map, -- 直接提取匹配的数值,无匹配则返回NULL value_map[target_key] AS matched_value, -- 处理无匹配的情况,返回默认值0.0 coalesce(value_map[target_key], 0.0) AS matched_value_with_default FROM your_table;
关键说明
value_map[target_key]是核心语法,Presto会自动将字符串列的值作为键去Map中查找对应值coalesce函数用于替换NULL结果,你可以根据需求修改默认值(比如换成NULL以外的其他数值)
内容的提问来源于stack exchange,提问作者Pratiek Malhotra
相关产品推荐
相关产品推荐

