hive内置函数

hive内置函数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dLiX5RTg-1675748068141)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20230207133358342.png)]

数字函数

取整函数

round

语法:round(double num)

返回值:BIGINT

该函数返回num的整数部分,遵循四舍五入

select round(2.35)
2

round还可以进行指定精度

语法:round(double num, int i)

返回值:DOUBLE

返回精度为i 的double

select round(2.35, 1)
2.4
floor

该函数用于向下取整

语法:floor(double num)

返回值:BIGINT

返回小于等于num的最大的整数

select round(2.35)
2
ceil

该函数用于向上取整

语法:ceil(double num)

返回值:BIGINT

返回大于等于num的最小整数

select ceil(2.35)
3

取随机数

语法:rand(int seed)

返回值:DOUBLE

返回一个0到1之间的随机数,如果指定seed,会返回一个稳定的随机数

hive (default)> select rand();
0.9263688016367634
hive (default)> select rand();
0.14751369361344724
hive (default)> select rand(100);
0.7220096548596434
hive (default)> select rand(100);
0.7220096548596434

幂运算

语法:pow(double a, double p)

返回值:DOUBLE

返回a的p次幂

hive (default)> select pow(2, 3);
8.0

绝对值

语法:abs(double a) abs(int a)

返回值:DOUBLE INT

返回a的绝对值

hive (default)> select abs(-12.34);
12.34
hive (default)> select abs(-12);
12

字符串函数

length

语法:length(string s)

返回值:INT

返回字符串A的长度

hive (default)> select length('asd');
3

reverse

语法:reverse(string s)

返回值:string

返回字符串s的反转效果

hive (default)> select reverse('asd');
dsa

concat

语法:concat(string a, string b, …)

返回值:string

返回输入的若干字符数按连接后的结果

hive (default)> select concat('hel', 'lo');
hello

hive (default)> select concat('hel', 'lo', 'world');
helloworld

concat_ws

语法:concat_ws(string SEP, string a, string b)

返回值:string

返回输入字符串连接后的结果,SEP表示字符串间的分隔符

hive (default)> select concat_ws(',', 'he','llo' ,'world');
he,llo,world

substr/substring

语法:substr(string a, int start), substring(string a, int start)

返回值:string

返回a从start位置到结尾的字符串

hive (default)> select substr('hello', 2);
ello

hive (default)> select substring('hello', 2);
ello

upper, ucase

语法:upper(string a), ucase(string a)

返回值:string

返回a的大写形式

hive (default)> select upper('asd');
ASD
hive (default)> select ucase('asd');
ASD

lower,lcase

语法:lower(string a), lcase(string a)

返回值:string

返回a的小写形式

hive (default)> select lower('ASD');
asd

hive (default)> select lcase('ASD');
asd

trim

语法:trim(string a)

返回值:string

去除a两边的空格

hive (default)> select trim(' a s d  ');
a s d

ltrim

语法:ltrim(string a)

返回值:string

去除a左面的空格

hive (default)> select ltrim(' a s d  ');
a s d 

rtrim

语法:ltrim(string a)

返回值:string

去除a右面的空格

hive (default)> select rtrim(' a s d  ');
 a s d

regexp_replace

正则表达式替换函数

语法:regexp_replace(string a, string b, string c)

返回值:string

将a中符合java正则表达式b的部分替换成c

hive (default)> select regexp_replace('football', 'foot', 'basket');
basketball

parse_url

URL解析函数

语法:parse_url(string url,string partToExtract)

返回值:string

hive (default)> select parse_url('https://blog.csdn.net/weixin_62759952/article/details/128889221?spm=1001.2014.3001.5501', 'HOST');
blog.csdn.net

hive (default)> select parse_url('https://blog.csdn.net/weixin_62759952/article/details/128889221?spm=1001.2014.3001.5501', 'PATH');
/weixin_62759952/article/details/128889221

split

语法:split(string s, string a)

返回值:array

按照字符串a来分割字符串s,返回分割后的字符串数组

hive (default)> select split('asdasdasd', 's');
["a","da","da","d"]

日期函数

获取当前时间戳

语法:unix_timestamp()

返回值:bigint

获得当前时区的UNIX时间戳

hive (default)> select unix_timestamp();
1675746126

时间戳转日期函数

语法:from_unixtime(bigint unixtime, string format)

返回值:string

转换unix时间戳到当前时区的时间格式

hive (default)> select from_unixtime(1675746126, 'yyyy-MM-dd HH:mm:ss');
2023-02-07 05:02:06

日期转UNIX时间戳

语法:unixtimestamp(string date, string pattern)

返回值:bigint

转换pattern格式的日期到UNIX时间戳,如果转换失败,返回0

hive (default)> select unix_timestamp('2023-02-07 05:02:06', 'yyyy-MM-dd HH:mm:ss');
1675746126

日期时间转日期函数

语法:to_date(string time)

返回值:string

返回time中的日期部分

hive (default)> select to_date('2023-02-07 05:02:06');
2023-02-07

日期转年函数

语法:year(string date)

返回值:int

返回日期中的年

hive (default)> select year('2023-02-07 05:02:06');
2023

日期转月函数

语法:month(string date)

返回值:int

返回日期中的月份

hive (default)> select month('2023-02-07 05:02:06');
2

日期转天函数

语法:day(string date)

返回值:int

返回日期中的天

hive (default)> select day('2023-02-07 05:02:06');
7

类似的还有hour、minute、second函数用来获取小时、分钟、秒

日期转周函数

语法:weekofday(string date)

返回值:int

返回日期当前所在的周

hive (default)> select weekofyear('2023-02-07 05:02:06');
6

日期比较函数

语法:datediff(string date1, string date2)

返回值:int

返回date1减去date2的天数

hive (default)> select datediff('2023-02-07', '2023-02-05');
2

日期增加函数

语法:date_add(string date, int day)

返回值:string

返回date加day天后的日期

hive (default)> select date_add('2023-02-07', 2);
2023-02-09

日期减少函数

语法:datesub(string date, int day)

返回值:string

返回date减去day天后的日期

hive (default)> select date_sub('2023-02-07', 2);
2023-02-05

日期转换函数

语法:data_format(string date, string format)

返回值:string

将date转换成format格式的日期

hive (default)> select date_format('2023-02-07', 'yyyy');
2023

条件函数

if

语法:if(boolean test, T TrueValue, T FalseValue)

返回值:T

当test为true,返回TrueValue,否则返回FalseValue

hive (default)> select if(1=1, 100, 200);
100

hive (default)> select if(1=2, 100, 200);
200

case

第一种用法

语法:case a when b then c else d end

返回值:T

如果a等于b返回c,否则返回d

hive (default)> select case 100 when 20 then 20 when 50 then 50 when 100 then 100 else 200 end;
100

hive (default)> select case 100 when 20 then 20 else 200 end;
200
第二种用法

语法:case when a then b else c end

返回值:T

如果a为true返回b否则返回c

hive (default)> select case when 1=2 then 1 when 1=1 then 2 else 3 end;
2

转换函数

语法:cast(字段 as 数据类型)

hive (default)> select cast(12.21 as int);
12

hive (default)> select cast('123' as int);
123

hive (default)> select cast('2023-2-7' as date);
2023-02-07

行转列

将多行数据转换成一个列

行转列用到的函数:

​ concat(str1, str2) 字符串拼接

​ concat_ws(s, str1, str2) 用分割符进行字符串拼接

​ collect_set(col) 根据某个值进行去重,产生array类型字段

en a then b else c end

返回值:T

如果a为true返回b否则返回c

hive (default)> select case when 1=2 then 1 when 1=1 then 2 else 3 end;
2

转换函数

语法:cast(字段 as 数据类型)

hive (default)> select cast(12.21 as int);
12

hive (default)> select cast('123' as int);
123

hive (default)> select cast('2023-2-7' as date);
2023-02-07

行转列

将多行数据转换成一个列

行转列用到的函数:

​ concat(str1, str2) 字符串拼接

​ concat_ws(s, str1, str2) 用分割符进行字符串拼接

​ collect_set(col) 根据某个值进行去重,产生array类型字段

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

健鑫.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值