赞
踩
1.数学运算
+,-,*,/ ,%
2.比较运算
>,<,=,<>
3.数值处理函数
(1)聚合函数
max(),min(),sum(),avg(),count()
(2)指定精度四舍五入函数round()
语法: round(double a, int d)
返回值: DOUBLE
说明: 返回指定精度d的double类型
举例:
hive> select round(3.1415926,4) from lxw_dual;
3.1416
(3) 向下取整函数: floor()
语法: floor(double a)
返回值: int
说明: 返回小于a的最大整数
举例:
hive> select floor(4.5)
4
(4)向上取整函数:ceil()
语法: floor(double a)
返回值: int
说明: 返回大于a的最小整数
举例:
hive> select ceil(4.5)
5
(5)绝对值函数: abs()
hive> select abs(-1)
1
(6)取余函数pmod(),返回余数的绝对值
4.时间函数
(1) 日期增加函数:date_add()
语法:date_add(date_string,num)
说明:在原有日期上增加天数
举例:
hive> select date_add('2020-10-26',10)
'2020-11-05'
(2) 日期减少函数:date_sub()
语法:date_sub(date_string,num)
说明:在原有日期上减少天数
举例:
hive> select date_sub('2020-10-26',10)
'2020-10-16'
(3) 日期新增/减少月函数:add_months()
select add_months('2023-04-30',1)
2023-05-31
(4) 日期差值函数:datediff()
语法:datediff(date_string1,date_string2)
说明:两个日期相差天数
举例:
hive> select datediff('2020-10-20','2020-10-10')
'10'
(5) 日期转时间戳函数:unix_timestamp()
语法:unix_timestamp(date_string)
说明:将日期转成时间戳。如果date满足yyyy-MM-dd HH:mm:ss的格式,则不需要带参数;如果date不满足
yyyy-MM-dd HH:mm:ss的格式,则需要带上date格式的参数
举例:
hive> select unix_timestamp('2020-10-26','yyyy-MM-dd')
1579968600
(6) 时间戳转日期函数:from_unixtime()
这里只能是10位的时间戳
语法:from_unixtime(时间戳,‘yyyy-mm-dd hh:mm:ss’)
说明:将时间戳转成日期
举例:
hive> select from_unixtime(1579968611,'yyyy-mm-dd hh:mm:ss')
'2020-10-26 12:10:11'
对于13位的时间戳,需将其转成10位,也就是秒,再处理
hive>select from_unixtime(cast(endTime/1000 as bigint),'yyyy-MM-dd HH:mm:ss')
(7) 日期时间转日期函数:to_date()
hive>select to_date('2021-01-01 12:21:30')
'2021-01-01'
(8) 获取当前日期
hive> select current_date()
'2021-09-23'
(9) 日期转周函数:weekofyear()
hive> select weekofyear()
(10) 日期取对应的年/月/日/时/分/秒
select year(),month(),day(),hour(),minute(),second()
(11) 日期转成周几
hive>select
case when pmod(datediff('2021-01-01','2018-01-01'),7) =0 then '周一'
when pmod(datediff('2021-01-01','2018-01-01'),7) =1 then '周二'
when pmod(datediff('2021-01-01','2018-01-01'),7) =2 then '周三'
when pmod(datediff('2021-01-01','2018-01-01'),7) =3 then '周四'
when pmod(datediff('2021-01-01','2018-01-01'),7) =4 then '周五'
when pmod(datediff('2021-01-01','2018-01-01'),7) =5 then '周六'
else '其他' end
5.字符串函数
(1) 字符串长度函数:length()
hive> select length('afsdf')
5
(2) 字符串连接函数:concat()
语法:concat(str1,str2)
返回值:string
说明:将多个字符串拼接成一个。如果其中有字符串为null,则返回null
举例:
hive> select concat('a','b','c');
abc
(3) 字符串连接函数:concat_ws()
语法:concat_ws(str_sep,str1,str2)
返回值:string
说明:如果要拼接的字符串中有null,则忽略;如果str_sep为null,则返回null
举例:
hive> select concat_ws('_','a','b','c');
a_b_c
(4) 字符串截取函数:substr()
hive> select substr('asasdfd',1,3)
(5) 字符串补全函数:lpad()
语法:lpad( string, length, pad_string )
返回值:string
说明:从左边开始补全。如果字符串本身长度大于补全的长度,会截取成补全的长度
举例:
hive> select lpad('a',5,'0');
0000a
(6) 字符串补全函数:rpad()
语法:rpad( string, length, pad_string)
返回值:string
说明:从右边开始补全。如果字符串本身长度大于补全的长度,会截取成补全的长度
举例:
sql
hive> select rpad('a',5,'0');
a0000
(7) 字符串转大写函数:upper,ucase
语法:upper(string)
返回值:string
说明:将字符串中的字符转成大写
举例:
hive> select upper('asfasas')
ASFASAS
(8) 字符串转小写函数:lower, lcase
语法:upper(string)
返回值:string
说明:将字符串中的字符转成小写
举例:
hive> select lower('ADSFAS')
adsfas
(9) 去空格函数:trim()
语法:trim(string)
返回值:string
说明:去掉字符串中前后的空格
举例:
hive> select trim(' ADSFAS ')
ADSFAS
(10) 数据类型转化函数:cast()
语法:cast( expression as data_type)
返回值:data_type
说明:将一个表达式转换成指定格式,并返回
举例:
hive> select cast( 1.0 as int)
1
(11) 正则表达式替换函数:regexp_replace()
select regexp_replace('fwe-vkof-ueqw-ewe','-.+?-','')
fweueqw-ewe
(12) 正则表达式截取函数:regexp_extract()
语法:regexp_extract(string,正则表达式,参数)
返回值:string
说明:参数=0,返回正则表达式匹配的所有字符串;参数=1,返回正则表达式匹配中第一个()匹配的字符串
举例:
select regexp_extract('fwe-vkof-ueqw-ewe','-(.+?)-',1)
(13) json解析函数:get_json_object()
语法:get_json_object(json字符串,'$.键 ')
返回值:string
说明:用于解析json字符串
举例:
select get_json_object('{'name':'daisy' ,'sex':'female' }','$.name')
daisy
(14) 分割字符串函数:split()
语法:split(string,分割字符)
返回值:数组
说明:分割字符中如果包含特殊字符,需要转义
举例:
select split('fwe-vkof-ueqw-ewe','-')
(15) 一列转多行。数组按列输出:lateral view explode()
语法:lateral view explode(字段名) 表别名 列别名
返回值:string
说明:固定组合,记住。一般在过滤之前执行
举例:
select movie,tbl.type
from movie_info
lateral view explode(split(category,',')) tbl as type;
(16) 多行转一行。collect_set(),collect_list()
语法:collect_set(),collect_list()
返回值:数组
说明:前者返回去重后的数组,后者返回不去重的。一般与group by 组合使用
举例:
select user_id,collect_set(package_name)
from adhoctemp.tmp_dwx5323361_20210306_test
group by user_id
参考连接:https://editor.csdn.net/md/?articleId=108628561
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。