当前位置:   article > 正文

HIVE常用操作和常用函数_hive 余数

hive 余数

1.数学运算

+,-,*,/ ,%
  • 1

2.比较运算

>,<,=,<>
  • 1

3.数值处理函数
(1)聚合函数

max(),min(),sum(),avg(),count()
  • 1

(2)指定精度四舍五入函数round()
语法: round(double a, int d)
返回值: DOUBLE
说明: 返回指定精度d的double类型
举例:

hive> select round(3.1415926,4) from lxw_dual;
3.1416
  • 1
  • 2

(3) 向下取整函数: floor()
语法: floor(double a)
返回值: int
说明: 返回小于a的最大整数
举例:

hive> select  floor(4.5)
4
  • 1
  • 2

(4)向上取整函数:ceil()
语法: floor(double a)
返回值: int
说明: 返回大于a的最小整数
举例:

hive> select ceil(4.5)
5
  • 1
  • 2

(5)绝对值函数: abs()

hive> select abs(-1)
1
  • 1
  • 2

(6)取余函数pmod(),返回余数的绝对值

4.时间函数
(1) 日期增加函数:date_add()
语法:date_add(date_string,num)
说明:在原有日期上增加天数
举例:

hive> select date_add('2020-10-26',10)
'2020-11-05'
  • 1
  • 2

(2) 日期减少函数:date_sub()
语法:date_sub(date_string,num)
说明:在原有日期上减少天数
举例:

hive> select date_sub('2020-10-26',10)
'2020-10-16'
  • 1
  • 2

(3) 日期新增/减少月函数:add_months()

select add_months('2023-04-30',1)
2023-05-31
  • 1
  • 2

(4) 日期差值函数:datediff()
语法:datediff(date_string1,date_string2)
说明:两个日期相差天数
举例:

hive> select datediff('2020-10-20','2020-10-10')
'10'
  • 1
  • 2

(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
  • 1
  • 2

(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'
  • 1
  • 2

对于13位的时间戳,需将其转成10位,也就是秒,再处理

hive>select from_unixtime(cast(endTime/1000 as bigint),'yyyy-MM-dd HH:mm:ss')

  • 1
  • 2

(7) 日期时间转日期函数:to_date()

hive>select to_date('2021-01-01 12:21:30')
'2021-01-01'
  • 1
  • 2

(8) 获取当前日期

hive> select current_date()
'2021-09-23'
  • 1
  • 2

(9) 日期转周函数:weekofyear()

hive> select weekofyear()
  • 1

(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 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

5.字符串函数
(1) 字符串长度函数:length()

hive> select length('afsdf')
5
  • 1
  • 2

(2) 字符串连接函数:concat()
语法:concat(str1,str2)
返回值:string
说明:将多个字符串拼接成一个。如果其中有字符串为null,则返回null
举例:

hive> select concat('a','b','c');
abc
  • 1
  • 2

(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
  • 1
  • 2

(4) 字符串截取函数:substr()

hive> select substr('asasdfd',1,3)
  • 1

(5) 字符串补全函数:lpad()
语法:lpad( string, length, pad_string )
返回值:string
说明:从左边开始补全。如果字符串本身长度大于补全的长度,会截取成补全的长度
举例:

hive> select lpad('a',5,'0');
0000a
  • 1
  • 2

(6) 字符串补全函数:rpad()
语法:rpad( string, length, pad_string)
返回值:string
说明:从右边开始补全。如果字符串本身长度大于补全的长度,会截取成补全的长度
举例:

sql
hive> select rpad('a',5,'0');
a0000
  • 1
  • 2
  • 3

(7) 字符串转大写函数:upper,ucase
语法:upper(string)
返回值:string
说明:将字符串中的字符转成大写
举例:

hive> select upper('asfasas')
ASFASAS
  • 1
  • 2

(8) 字符串转小写函数:lower, lcase
语法:upper(string)
返回值:string
说明:将字符串中的字符转成小写
举例:

hive> select lower('ADSFAS')
adsfas
  • 1
  • 2

(9) 去空格函数:trim()
语法:trim(string)
返回值:string
说明:去掉字符串中前后的空格
举例:

hive> select trim(' ADSFAS ')
ADSFAS
  • 1
  • 2

(10) 数据类型转化函数:cast()
语法:cast( expression as data_type)
返回值:data_type
说明:将一个表达式转换成指定格式,并返回
举例:

hive> select cast( 1.0 as int)
1
  • 1
  • 2

(11) 正则表达式替换函数:regexp_replace()

select regexp_replace('fwe-vkof-ueqw-ewe','-.+?-','')
fweueqw-ewe
  • 1
  • 2

(12) 正则表达式截取函数:regexp_extract()
语法:regexp_extract(string,正则表达式,参数)
返回值:string
说明:参数=0,返回正则表达式匹配的所有字符串;参数=1,返回正则表达式匹配中第一个()匹配的字符串
举例:

select regexp_extract('fwe-vkof-ueqw-ewe','-(.+?)-',1)
  • 1

(13) json解析函数:get_json_object()
语法:get_json_object(json字符串,'$.键 ')
返回值:string
说明:用于解析json字符串
举例:

select get_json_object('{'name':'daisy' ,'sex':'female' }','$.name')
daisy
  • 1
  • 2

(14) 分割字符串函数:split()
语法:split(string,分割字符)
返回值:数组
说明:分割字符中如果包含特殊字符,需要转义
举例:

select split('fwe-vkof-ueqw-ewe','-')
  • 1

(15) 一列转多行。数组按列输出:lateral view explode()
语法:lateral view explode(字段名) 表别名 列别名
返回值:string
说明:固定组合,记住。一般在过滤之前执行
举例:

select movie,tbl.type
from movie_info
lateral view explode(split(category,',')) tbl as type;

  • 1
  • 2
  • 3
  • 4

(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 
  • 1
  • 2
  • 3

参考连接:https://editor.csdn.net/md/?articleId=108628561

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/571169
推荐阅读
相关标签
  

闽ICP备14008679号