【presto & hive 对比2】json字符串提取,行转列,位运算
- 问题1: json字符串提取
--hive
select get_json_object(json, '$.book');
--Presto
select json_extract_scalar(json, '$.book');
--注意这里Presto中json_extract_scalar返回值是一个string类型,其还有一个函数json_extract是直接返回一个json串,所以使用的时候你得自己知道取的到底是一个什么类型的值.
- 问题2:列转行
有两个字段, user_id, scores(分别是用户的得分)
示例: yn 98,97,95
如果我们想将其转化为 user_id, score(一个分值),则需要用到列转行,结果是
yn 98
yn 97
yn 95
对应的sql写法为
--hive
select student, score from tests lateral view explode(split(scores, ',')) t as score;
--presto