Hive内置函数

关系运算符

名称语法描述
=A=B等值比较:如果表达式A与表达式B相等,则为TRUE;否则为FALSE
<>A <> B不等值比较:如果表达式A为NULL,或者表达式B为 NULL,返回NULL;如果表达式A与表达式B不相等,则 为TRUE;否则为FALSE
<A < B小于比较:如果表达式A为NULL,或者表达式B为 NULL,返回NULL;如果表达式A小于表达式B,则为 TRUE;否则为FALSE
<=A <= B小于等于比较:如果表达式A为NULL,或者表达式B为 NULL,返回NULL;如果表达式A小于或者等于表达式 B,则为TRUE;否则为FALSE
>A > B大于比较:如果表达式A为NULL,或者表达式B为 NULL,返回NULL;如果表达式A大于表达式B,则为 TRUE;否则为FALSE
>=A >= B大于等于比较:如果表达式A为NULL,或者表达式B为 NULL,返回NULL;如果表达式A大于或者等于表达式 B,则为TRUE;否则为FALSE
IS NULLA IS NULL空值判断: 如果表达式A的值为NULL,则为TRUE;否则 为FALSE
IS NOT NULLA IS NOT NULL非空判断:如果表达式A的值为NULL,则为FALSE;否 则为TRUE
LIKEA LIKE BLIKE比较:如果字符串A或者字符串B为NULL,则返回 NULL;如果字符串A符合表达式B 的正则语法,则为 TRUE;否则为FALSE
RLIKEA RLIKE BRLIKE比较:如果字符串A或者字符串B为NULL,则返回 NULL;如果字符串A符合JAVA正则表达式B的正则语法,则为TRUE;否则为FALSE。
REGEXPA REGEXP B功能与RLIKE相同

数学运算符

名称语法描述
+A + B相加:返回A与B相加的结果
-A - B相减:返回A与B相减的结果
*A * B相乘:返回A与B相乘的结果
/A / B相除:返回A除以B的结果。结果的数值类型为double
%A % B取余:返回A除以B的余数
&A & B位与操作:返回A和B按位进行与操作的结果
|A | B位或操作: 返回A和B按位进行或操作的结果
^A ^ B位异或操作: 返回A和B按位进行异或操作的结果
~A ~ B位取反操作: 返回A按位取反操作的结果

逻辑运算符

名称语法描述
ANDA AND B逻辑与操作:如果A和B均为TRUE,则为TRUE;否则为 FALSE。如果A为NULL或B为NULL,则为NULL
ORA OR B逻辑或操作:如果A为TRUE,或者B为TRUE,或者A和B均为 TRUE,则为TRUE;否则为FALSE
NOTNOT A逻辑非操作:如果A为FALSE,或者A为NULL,则为TRUE;否 则为FALSE

数值计算

名称语法描述
roundround(double a)取整函数:返回double类型的整数值部分 (遵 循四舍五入)
floorfloor(double a)向下取整函数:返回等于或者小于该double变 量的最大的整数
ceilceil(double a)向上取整函数:返回等于或者大于该double变 量的最小的整数
randrand()取随机数函数:返回一个0到1范围内的随机 Double数值
expexp(double a)自然指数函数:返回自然对数e的a次方
log10log10(double a)以10为底对数函数:返回以10为底的a的对数
log2log2(double a)以2为底对数函数:返回以2为底的a的对数
loglog(double base, double a)对数函数:返回以base为底的a的对数
powpow(double a, double p)幂运算函数:返回a的p次幂
powerpower(double a, double p)幂运算函数:返回a的p次幂,与pow功能相同
sqrtsqrt(double a)开平方函数:返回a的平方根
binbin(BIGINT a)二进制函数:返回a的二进制代码表示
hexhex(BIGINT a)十六进制函数:如果变量是int类型,那么返回a的十六进制表示;如果变量是string类型,则返回该字符串的十六进制表示
unhexunhex(string a)反转十六进制函数:返回该十六进制字符串所代码的字符串
convconv(BIGINT num, int from_base, int to_base)进制转换函数:将数值num从from_base进制转化到to_base进制
absabs(double a) abs(int a)绝对值函数:返回数值a的绝对值
pmodpmod(int a, int b)正取余函数:返回正的a除以b的余数
sinsin(double a)正弦函数:返回a的正弦值
asinasin(double a)反正弦函数:返回a的反正弦值
coscos(double a)余弦函数:返回a的余弦值
acosacos(double a)反余弦函数:返回a的反余弦值

日期函数

名称语法描述
from_unixtimefrom_unixtime(bigint unixtime[, string format])UNIX时间戳转日期函数:转化 UNIX时间戳(从1970-01-01 00:00:00 UTC到指定时间的秒数)到当前时区的时间格式
unix_timestampunix_timestamp()获取当前UNIX时间戳函数:获得当前时区的UNIX时间戳
unix_timestampunix_timestamp(string date)日期转UNIX时间戳函数:转换格式为"yyyy-MM-dd HH:mm:ss"的日期到UNIX时间戳,如果转化失败,则返回0。
unix_timestampunix_timestamp(string date, string pattern)指定格式日期转UNIX时间戳函数:转换pattern格式的日期到UNIX时间戳。如果转化失败, 则返回0。
to_dateto_date(string timestamp)日期时间转日期函数:返回日期时间字段中的日期部分。
yearyear(string date)日期转年函数:返回日期中的年。
monthmonth(string date)日期转月函数:返回日期中的月份。
dayday(string date)日期转日函数:返回日期中的天。
hourhour(string date)日期转小时函数:返回日期中的小时。
minuteminute(string date)日期转分钟函数:返回日期中的分钟。
secondsecond(string date)日期转秒函数:返回日期中的秒。
weekofyearweekofyear(string date)日期转周函数:返回日期在当前的周数。
datediffdatediff(string enddate, string startdate)日期比较函数:返回结束日期减去开始日期的天数。
date_adddate_add(string startdate, int days)日期增加函数:返回开始日期startdate增加days天后的日期。
date_subdate_sub(string startdate, int days)日期减少函数:返回开始日期startdate减少days天后的日 期。

条件函数

名称语法描述
ifif(boolean testCondition, T valueTrue, T valueFalseOrNull)If函数:当条件testCondition为TRUE时,返回valueTrue;否则返回valueFalseOrNull
COALESCECOALESCE(T v1, T v2, …)非空查找函数:返回参数中的第一个非空值;如果所有值都为NULL,那么返回NULL
CASECASE a WHEN b THEN c [WHEN d THEN e] ··· [ELSE f] END条件判断函数:如果a等于b,那么返回c;如果a等于d,那么返回e; 否则返回f
CASECASE WHEN a THEN b [WHEN c THEN d] ··· [ELSE e] END条件判断函数:如果a为TRUE,则返回b;如果c为TRUE,则返回d;否则返回e

字符串函数

名称语法描述
lengthlength(string A)字符串长度函数:返回字符串A的长度
reversereverse(string A)字符串反转函数:返回字符串A的反转结果
concatconcat(string A, string B…)字符串连接函数:返回输入字符串连接后的结果,支持任意个输入字符串
concat_wsconcat_ws(string SEP, string A, string B…)带分隔符字符串连接函数:返回输入字符串连接后的结果,SEP表示各个字符串间的分隔符
substrsubstr(string A, int start)字符串截取函数:返回字符串A从start位置到结尾的字符串
substringsubstring(string A, int start)字符串截取函数:返回字符串A从start位置到结尾的字符串
upperupper(string A)字符串转大写函数:返回字符串A的大写格式
ucaseucase(string A)字符串转大写函数:返回字符串A的大写格式
lowerlower(string A)字符串转小写函数:返回字符串A的小写格式
lcaselcase (string A)字符串转小写函数:返回字符串A的小写格式
trimtrim(string A)去空格函数:去除字符串两边的空格
ltrimltrim(string A)左边去空格函数:去除字符串左边的空格
rtrimrtrim(string A)右边去空格函数:去除字符串右边的空格
regexp_replaceregexp_replace(string A, string B, string C)正则表达式替换函数:将字符串A中的符合java正则表达式B的部分替换为C
regexp_extractregexp_extract(string subject, string pattern, int index)正则表达式解析函数:将字符串subject按照pattern正则表达式的规则拆分,返回index指定的字符
parse_urlparse_url(string urlString, string partToExtract [, string keyToExtract])URL解析函数:返回URL中指定的部分。partToExtract的有效值为:HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE, and USERINFO
get_json_objectget_json_object(string json_string, string path)json解析函数:解析json的字符串json_string,返回path指定的内容。如果输入的json字符串无效,那么返回NULL
spacespace(int n)空格字符串函数:返回长度为n的字符串
repeatrepeat(string str, int n)重复字符串函数:返回重复n次后的str字符串
asciiascii(string str)首字符ascii函数:返回字符串str第一个字符的ascii码
lpadlpad(string str, int len, string pad)左补足函数:将str进行用pad进行左补足到len位
rpadrpad(string str, int len, string pad)右补足函数:将str进行用pad进行右补足到len位
splitsplit(string str, string pat)分割字符串函数:按照pat字符串分割str,会返回分割后的字符串数组
find_in_setfind_in_set(string str, string strList)集合查找函数:返回str在strlist 第一次出现的位置,strlist是用逗号分割的字符串。如果没有找该str字符,则返回0

聚合函数

名称语法描述
countcount(*), count(expr), count(DISTINCT expr[, expr_.])个数统计函数: count(*)统计检索出的 行的个数,包括NULL 值的行;count(expr) 返回指定字段的非空值 的个数; count(DISTINCT expr[, expr_.])返回指 定字段的不同的非空值 的个数
sumsum(col), sum(DISTINCT col)总和统计函数: sum(col)统计结果集中col的相加的结果; sum(DISTINCT col)统计结果中col不同值相加的结果
avgavg(col), avg(DISTINCT col)平均值统计函数:avg(col)统计结果集中col的平均值;avg(DISTINCT col)统计结果中col不同值相加的平均值
minmin(col)最小值统计函数:统计结果集中col字段的最小值
var_popvar_pop(col)非空集合总体变量函数:统计结果集中col非空集合的总体变量 (忽略null)
var_sampvar_samp (col)非空集合样本变量函数:统计结果集中col非空集合的样本变量(忽略null)
tddev_popstddev_pop(col)总体标准偏离函数:该函数计算总体标准偏离,并返回总体变量的平方根,其返回值与VAR_POP函数的平方根相同
stddev_sampstddev_samp (col)样本标准偏离函数:该函数计算样本标准偏离
percentilepercentile(BIGINT col, p)中位数函数:求准确的第pth个百分位数,p必须介于0和1之间, 但是col字段目前只支持整数,不支持浮点数类型
percentile_approxpercentile_approx(DOUBLE col, p [, B])近似中位数函数:求近似的第pth个百分位 数,p必须介于0和1之间,返回类型为double,但是col字段支持浮点类型。参数B控制内存消耗的近似精 度,B越大,结果的准确度越高。默认为10,000。当col字段中的distinct值的个数小于B时,结果为准确的百分位数
histogram_numerichistogram_numeric(col, b)直方图:以b为基准计算col的直方图信息

复合类型构建函数

名称语法描述
mapmap(key1, value1, key2, value2, …)Map类型构建:根据输入的key和value对构建map类型
structstruct(val1, val2, val3, …)Struct类型构建:根据输入的参数构建结构体struct类型
arrayarray(val1, val2, …)Array类型构建:根据输入的参数构建数组array类型

复合类型操作函数

名称语法描述
mapM[key]map类型访问:返回map类型M中,key值为指定值的value值
structS.xstruct类型访问:返回结构体S中的x字段
arrayA[n]array类型访问:返回数组A中的第n个变量值

高级函数

名称语法描述
explodeexplode(Array/Map)将array或者map中每个元素单独生成一行,就是内置表生成函数(UDTF), UDTF将为每个输入行生成零个或多个输出行。
lateral viewlateral view udtf(expression) tableAlias as columnAlias (,columnAlias)*lateral view其实就是用来和想类似explode这种UDTF函数联用的,lateral view会将UDTF生成的结果放到一个虚拟表中,然后这个虚拟表会和输入行进行join来达到连接UDTF外的select字段的目的。
reflectreflect(class,method [,arg1 [,arg2…]])reflect函数可以支持在sql中调用java中的自带函数,秒杀一切udf函数

窗口函数和分析函数

名称语法描述
OVEROVER()指定分析函数工作的数据窗口大小,这个数据窗口大小可能会随着行的变而变化
CURRENT ROWCURRENT ROW()表示当前行
PRECEDINGn PRECEDING表示往前n行数据
FOLLOWINGn FOLLOWING表示往后n行数据
UNBOUNDEDUNBOUNDED表示起点
UNBOUNDED PRECEDINGUNBOUNDED PRECEDING表示从前面的起点
UNBOUNDED FOLLOWINGUNBOUNDED FOLLOWING表示到后面的终点
LAGLAG(col,n)表示往前第n行数据
LEADLEAD(col,n)表示往后第n行数据
RANK()RANK()表示返回数据项在分组中的排名,排名相等会在名次中留下空位
DENSE_RANK()DENSE_RANK()表示返回数据项在分组中的排名,排名相等会在名次中不会留下空位
NTILE()NTILE(int n)把有序分区中的行分发到指定数据的组中,各个组有编号,编号从1开始,对于每一行,NTILE返回此行所属的组的编号
ROW_NUMBER()ROW_NUMBER()为每条记录返回一个数字
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值