一、类型
(1)UDF(User-Defined-Function)
一进一出 select upper(“DD”) from emp;
(2)UDAF(User-Defined Aggregation Function)
聚集函数,多进一出
类似于:count/max/min
(3)UDTF(User-Defined Table-Generating Functions)
一进多出
二、常用函数
(1)查看
1.查看系统自带的函数
hive> show functions;
2.显示自带的函数的用法
hive> desc function upper;
3.详细显示自带的函数的用法
hive> desc function extended upper;
(2)使用
1、转大小写
lcase(“ABC”) abc
ucase(“abc”) abc
2、截取
substr(“hello”,2) ello
substr(“helllo”,-2) lo
substr(“hello”,2,3) ell
(第一个数字代表开始截取的位置,第二个数字代表街截取的位数)
3、绝对值
abs(-1) 1
4、切割
select split(“a|b|c”,‘\|’); \转义
结果:[“a”,“b”,“c”]
5、合并
concat(“a”,“b”) ab
concat_ws(‘|’,“a”,“b”) a|b
6、collect_set( ) 结果放在数组里面,数组中的元素是去过重的
实例:行转列
concat_ws(‘|’,collect_set(t.name)
列转行:
lateral view explode (category) temptable as cate ;
三、日常笔记:
1、指定parquet压缩格式
create table table_name
(id string, name string, score double)
partitioned by (dt string)
STORED AS PARQUET TBLPROPERTIES('parquet.compression'='gzip');
2、行专列
select scenes ,adtype from ods.ods_sms_esp_httpreq_nextstepbutton
LATERAL VIEW explode (split(scene,',')) addr_tmp AS scenes where dt=20220804
3、删除分区
alter table dws.dws_sms_iccc_smsandphone_hit_ratedrop partition (dt='${day}');
4、查看分区详情:
describe formatted ods.ods_coupon partition (dt=20220117 , hour=9);
5、添加列
ALTER TABLE dws.dws_ecm_features_deviceid_goods_analysis ADD COLUMNS ( pageid string) cascade;
6、时间戳转时间
select from_unixtime(1441565203,'yyyy/MM/dd HH:mm:ss');