日常使用中发现trino和hive中的有一些函数存在差异,所以开此帖记录一下
- 这里只是记录trino和hive有差异的函数,遇到了就会记录一下,不定期更新
1. 查看集合中元素个数
- hive:
size() - trino:
cardinality()
2. map取值
- hive:
Map[key] - trino:
element_at(map(K, V), key)
3. 爆炸函数
- hive:
SELECT student, score
FROM tests
LATERAL VIEW explode(scores) t AS score;
- trino:
SELECT student, score
FROM tests
CROSS JOIN UNNEST(scores) AS t (score);
4.类型转换
- hive:
cast() - trino:
try_cast()
trino 中也有
cast()函数,但是cast()函数对于转换不了的类型会抛出异常,如:cast('abc' as int)会报错
5.日期函数
日期相差几天
- trino:
select date_diff('day',cast('2024-10-18' as date),cast('2024-11-01' as date)) - hive:
select datediff('2024-11-01','2024-10-18')
结果:14
- trino 两个时间相差几个小时:
select date_diff('hour',date_parse('2022070316','%Y%m%d%H'),current_timestamp)
日期加减
- hive
select date_add('2024-11-30',2);
select date_add(current_timestamp,2);
- presto
select date_add('day',-2,cast('2020-01-10' as date)); -->输出date类型日期:2021-01-08
select date_add('day',-2,current_date); -->输出date类型日期:2021-01-06
select format_datetime(date_add('day',-1,cast('2021-06-19' as date)),'yyyy-MM-dd')
6. 从json串中提取字段
- trino:
json_extract_scalar(json_str , '$.column') - hive:
get_json_object(json_str , '$.column')
3239

被折叠的 条评论
为什么被折叠?



