hive常用函数大全

本文全面介绍了SQL中的各种实用函数,包括日期函数、数值计算、字符串处理、统计函数、关系运算、JSON处理、复合类型构造及其它常用函数。通过具体示例展示了如何使用这些函数进行数据处理和分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.日期函数

 

--当前时间

select current_date();

 

--格式转换

select from_unixtime(1586158716,'yyyyMMdd');

 

--转unix时间戳

select unix_timestamp('2020-04-06 15:38:36','yyyy-MM-dd HH:mm:ss');

 

--当前时间

select from_unixtime(unix_timestamp());

 

--当前日期

select to_date(from_unixtime(unix_timestamp()));

 

--获得月份

select month('2020-04-01');

 

--获得年

select year('2020-04-01');

 

--一年中第几周

select weekofyear('2020-04-06');

 

--日期加减

select datediff('2020-04-06','2020-04-05');

 

select date_add('2020-04-06',1);

 

date_sub()

 

--当月最后一天

last_day()

 

--按照格式返回字符串

select date_format('2020-04-06','yyyyMMdd');

 

 

 

2.数值计算

 

--取整/指定精度取整

select round(3.1415926,2);

 

floor——向下取整

ceil——向上取整

abs——绝对值

 

--随机数

select rand();

 

--取余

select pmod(13,3);

 

 

 

3.字符串处理

 

--长度

select length('asdf');

 

--截取

select substring('asdf',1,2);

 

--拼接

select concat('eng','lish');

 

--分隔符拼接

select concat_ws(',','a','b','c');

 

--去掉前后空格

select trim('                            asdf');

 

--拆分,返回数组

select split('a,b,c,d,1,2,3',',');

 

--解析url

select parse_url('https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu','QUERY');

 

--获取hash

select hash('恶魔猎手');

 

 

 

4.统计函数

 

count()

sum()

avg()

 

--列转一行

collect_set()

collect_list()

 

--分组排序

row_number()

rank()

dense_rank()

 

--小于等于当前值的行数/分组内总行数

cume_dist() 

 

--组内当前行rank-1/分组内总行数-1

percent_rank()

 

--往前第几行的值

lag()

 

--往后第几行的值

lead()

 

--窗口范围

over()

--组内第一行到当前行

sum(pv) over(partition by cookieid order by createtime) as pv1

--组内第一行到当前行

sum(pv) over(partition by cookieid order by createtime between unbounded preceding and and current row) as pv2

--当前行到组内最后行

sum(pv) over(partition by cookieid order by createtime between current row and and unbounded following) as pv3

--组内前一行到组内后三行

between 1preceding and 3 following

 

 

 

5.关系运算

 

--匹配符

select 'aaacjasdf' like '___cj%';

 

--正则

select '2314' rlike '\\d+';

 

select '123' regexp('\\d+');

 

--正则替换

select regexp_replace('asdf1234qwer', '\\d+', 'x');

 

--正则解析

select regexp_extract('https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu', 'rsv_bp=([0-9])(&)', 2);

这个例子举得不太好感觉

 

 

 

6.json处理

 

get_json_object()

 

json_tuple()

 

 

 

7.复合类型构造函数

 

map(k1,v1,k2,v2...)

 

select struct(1,'cj',27);

 

array(1,2,3)

 

 

 

8.其他常用函数

 

nvl()——空则赋X值

 

coalesce()——返回第一个非空

 

explode()——eg:split生成数组,把数组中每个元素拿出来作为一行

 

lateral view——侧视图

 

lateral view explode(split()) 虚拟视图名 as 列名

 

eg:一名老师对应一个学科列表,把学科subject[1101,1102,1103]拆成多行的形式,即一位老师有多行数据

 

select teacher_id,subject_1 from table_name lateral view explode(split(subject,',')) a as subject_1;

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值