hive-函数

本文详细介绍Hive SQL中的各种运算符及内置函数,包括比较运算符、算术运算符、逻辑运算符等,并介绍了UDF、UDAF、UDTF三种内置函数的应用场景及其数学、日期、条件等各类常用函数。

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

1、hive的内置运算符

 

比较运算符:

A==B

A<>B 不等于

A<B

A<=B

A>=B

A IS NULL

A IS NOT NULL

like 模糊查询

 

算术运算符:

A+B

A-B

A*B

A/B

A%B

 

逻辑运算符:

A AND B

A && B:(与A AND B一样并且的意思)

A OR B

A | B:(与A OR B一样或者的意思)

NOT A

! A (NOT A一样非的意思)

 

对复杂类型的操作:

查询数组中的数据:

select 数组字段[下标] from 表名

 

查询map中对应key的数据:

select map字段名[“key”] from 表名

 

查询struct中对应名字的值:

select 字段名.city from 表名

 

2hive的内置函数包括3种:

UDF,UDAF,UDTF

 

UDF:一进一出

(类似于:sql里面的dataformat日期函数,针对的是每列中的每个元素进行日期的格式话,输出的是一个格式化后的数据)

 

UDAF:多进一出,聚集函数

(类似于:sql里面的sum,max,min,等函数,针对的是每列中所有的元素,输出的是一个元素)

 

UDTF:一进多出

(类似于:我数据库里面有的字段每行数据是一个数组,我要对其进行拆分等操作。)

 

 

内置函数-数学函数

round(double a) :

四舍五入

floor(double a):

向下舍入最接近的值

例如:floor(21.2) 结果:21

ceil(double a):

向上舍入最接近的值

例如:ceil(21.2) 结果:22

exp(double n):

返回en次方

ln(double a):

返回以e为底a的对数

log10(double a)

返回以10为底a的对数

log2(double a)

返回以2为底a的对数

log(double adouble b)

返回以a为底b的对数

pow(double adouble b)

返回ab次幂

sqrt(double a)

返回a的平方根

abs(double a):

返回a的绝对值

pmod(int a,int b)

返回a除以b的余数的绝对值

sin(double a)

返回给定角度的正弦值

cos(double a)

返回给定角度的余弦值

ssin(double a)

返回给定角度的正弦值,的相反数,前提a[-1,1]

acos(double a)

返回给定角度的余弦值,的相反数,前提a[-1,1]

 

positive(int ,a)

返回a的值

例如:positive(2),返回的是2

negative(int ,a)

返回a的相反数

例如:negative(2),返回的是-2

 

内置函数-收集函数

size(Map<K,V>)

返回的是map类型中元素的数量

 

map_keys(Map<K,V>)

返回map中所有的key

 

map_values(Map<K,V>)

返回map中所有的value

 

size(Array<T>)

返回的是数组类型中元素的数量

 

array_contains(Array<T>,value)

返回数组中包含value的值,有的话返回为true否则为false

 

sort_array(Array<T>)

对数组进行排序

 

内置函数-类型转换函数

cast( b as <type> )

将字段b转换为某种类型,转换失败的话返回的是NULL

例如:cast(“1” as int )我将字符串1转换为int类型

 

内置函数-日期函数

data:1992-11-21

year(String date)

返回指定日期date中的年

 

month(String date)

返回指定日期date中的月

 

day(String date)

返回指定日期date中的天

 

hour(String date)

返回指定日期date中的小时

 

minute(String date)

返回指定日期date中的分钟

 

second(String date)

返回指定日期date中的秒

 

日期的计算:

datadiff(String enddate,String startdate)

2个日期的时间差

 

date_add(String startdate,int days)

对给定的日期加上days

 

date_sub(String startdate,int days)

对给定的日期减去days

 

内置函数-条件函数

if(a=bT,V)

如果a=b,返回T(自定义一个值),不等于则返回V(自定义一个值)

 

CASE a WHEN b THEN c [WHEN d THEN e] *[ELSE f] END

给定一个a这个值

a=b的时候返回c,当a=d的时候返回e,否则就返回f

 

CASE WHEN a TEHN b [WHEN c THEN d] * [ELSE e] END

当值为a的时候返回b,当值为c的时候返回d,否则返回e

 

内置函数-字符函数

 

upper (String a)  ucase  (String a)

将字符串大写

 

lower(String b)  lcase (String b)

将字符串小写

 

length(String a)

返回a的长度

 

reverse(String a)

返回倒序的字符串

 

concat(String a,String b)

将多个字符串进行拼接

 

concat_ws(String “:”,String A,String B)

链接多个字符串,使用指定的分隔符:进行隔开

 

substr(String A,int start)

截取字符串

trim(String A)

删除字符串2端的空格,中间的空格保留

regexp_replace(String A,String B,Strng C)

字符串A中的B字符被C字符所取代

 

repeat(String str,int a)

输出重复了a次的字符串str

3hive的聚合函数UDAF

count(*)

统计总行数,包括NULL的行

 

count(DISTINCT *)

去重,并进行统计

 

sum(DISTINCT col)

去重求和

 

avg(DISTINCT col)

去重求平均数

 

max(col):最大值

min(col):最小值

 

var_pop(col):返回指定列的方差

var_samp(col)返回指定列的样本方差

corr(col2,col3):返回2列的相关系数

 

3hive的内置函数UDTF

explode(array<TYPE> a)

数组一条记录中有多个参数,将参数拆分,每个参数生成一列

explode(MAP)

MAP进行拆分后,key是一个字段,value是一个字段

 

4、hive的创建自定义函数:

 

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值