【SQL】hive和presto的常规 *** 作(二)

【SQL】hive和presto的常规 *** 作(二),第1张

【SQL】hive和presto的常规 *** 作(二)

之前从性能、字段类型转换、日期格式转换、解析url这四个方面做了对比:

hive和presto的常规 *** 作-sql语句(一)_半边诗人的博客-CSDN博客工作中常常会遇到同样的代码需要hive和presto的自如切换场景,常见的sql语句又没有很了熟于心时,一份常用函数参照表便显得无比重要,安排!!!(如有疑问,烦请私信,向各位大佬学习 mo bai~)本文我们从性能、字段类型转换、日期格式转换、解析url,这4个方面看他们的区别:hivepresto性能本质区别一个查询转化为多个MapReduce后,一个接一个执行。执行中间结果通过磁盘的读写进行同步。通过一个定制的查https://blog.csdn.net/weixin_44411175/article/details/121021848

实际使用中还有很多不足,仍在不断补充中~~~ 

hivepresto日期相关weekofyear(cast( from_unixtime(cast( start_ts as bigint),'yyyy-MM-dd') as date))

-- 选取一个周一,与当前日期的天数差,除以7,向上取整

ceiling(date_diff('day',cast('2020-12-28' as date),cast(date_time as date))/7) week

---直接使用presto内置函数

week(cast(date_time as date)) week

解析jsonget_json_object(json,'$.value')

json_extract_scalar(json,'$.action_type')

json_extract(json,'$.value')

列转行

lateral view explode (split(vid_s,'##')) vid_1  as vid

其中:split(vid_s,'##')是需要转置的列

vid_1是需要转置的列的新命名

vid 是转置后的新列

cross join unnest (split(vid_s,'##')) as t (vid) 

其中:(split(vid_s,'##')) 是需要转置的列

(vid) 是转置后的新列

长度size()cardinality()字符串拼接

--自由拼接

concat(string1,'-',string2)

-- 按分隔符拼接

concat_ws('-',string1,string2)

-- 自由拼接

concat(string1,'-',string)

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5715915.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存