Hive常用函数

详情见Hive官网
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF

0 算数运算函数

运算符描述
A+BA和B 相加
A-BA减去B
A*BA和B 相乘
A/BA除以B
A%BA对B取余
A&BA和B按位取与
A|BA和B按位取或
A^BA和B按位取异或
~AA按位取反

1 数值函数

函数名用法
ABS(x)返回x的绝对值
CEIL(x)返回不小于x的最小整数
FLOOR(x)返回不大于x的最大整数
ROUND(x)返回最接近x的整数
EXP(x)返回e的x次幂
LN(x)返回x的自然对数
LOG10(x)返回x的以10为底的对数
POWER(x, y)返回x的y次幂
SQRT(x)返回x的平方根
RAND()返回0到1之间的随机浮点数
SIGN(x)返回x的符号,1为正数,-1为负数,0为零
MOD(x, y)返回x除以y的余数
SIN(x)返回x的正弦值
COS(x)返回x的余弦值
TAN(x)返回x的正切值
ASIN(x)返回x的反正弦值
ACOS(x)返回x的反余弦值
ATAN(x)返回x的反正切值
RADIANS(x)将x从角度转换为弧度
DEGREES(x)将x从弧度转换为角度

2 字符串函数

函数名用法
CONCATCONCAT(string1, string2, …, stringN)
将多个字符串连接为一个字符串,参数为多个待连接的字符串。
LENGTHLENGTH(string)
返回字符串的长度,单位为字符数。
LOWERLOWER(string)
将字符串转换为小写。
UPPERUPPER(string)
将字符串转换为大写。
TRIMTRIM(string)
去除字符串两端的空白字符。
SUBSTRINGSUBSTRING(string, startIndex, length)
从字符串中截取指定位置和长度的子串,startIndex为起始位置,length为子串长度。
REPLACEREPLACE(string, search, replace)
将字符串中的指定子串search替换为replace。
REGEXP_REPLACEREGEXP_REPLACE(string, pattern, replacement)
使用正则表达式将字符串中匹配pattern的部分替换为replacement。
REGEXP_EXTRACTREGEXP_EXTRACT(string, pattern)
使用正则表达式从字符串中提取匹配pattern的部分。
INSTRINSTR(string, substring)
返回substring在字符串中第一次出现的位置,如果找不到则返回0。
INITCAPINITCAP(string)
将字符串的首字母转换为大写,其余字母转换为小写。
CONCAT_WSCONCAT_WS(separator, string1, string2, …, stringN)
将多个字符串使用指定的分隔符(separator)连接为一个字符串,参数为多个待连接的字符串。
LTRIMLTRIM(string)
去除字符串左端的空白字符。
RTRIMRTRIM(string)
去除字符串右端的空白字符。
REVERSEREVERSE(string)
将字符串反转。
SPACESPACE(n)
返回由n个空格字符组成的字符串。
TRANSLATETRANSLATE(string, from, to)
将字符串中的字符从from替换为to,字符的对应关系通过对应位置上的字符映射实现。

3 日期函数

函数名用法
CURRENT_DATECURRENT_DATE()
返回当前日期(不包含时间部分),格式为’yyyy-MM-dd’。
CURRENT_TIMESTAMPCURRENT_TIMESTAMP()
返回当前时间戳,包含日期和时间部分,格式为’yyyy-MM-dd HH:mm:ss’。
YEARYEAR(date)
返回日期中的年份部分。
MONTHMONTH(date)
返回日期中的月份部分,取值范围为1~12。
DAYDAY(date)
返回日期中的天数部分,取值范围为1~31。
HOURHOUR(timestamp)
返回时间戳中的小时部分,取值范围为0~23。
MINUTEMINUTE(timestamp)
返回时间戳中的分钟部分,取值范围为0~59。
SECONDSECOND(timestamp)
返回时间戳中的秒数部分,取值范围为0~59。
FROM_UNIXTIMEFROM_UNIXTIME(unixTime[, format])
将Unix时间戳转换为日期字符串,可指定输出格式。
UNIX_TIMESTAMPUNIX_TIMESTAMP([date[, pattern]])
将日期字符串转换为Unix时间戳,可指定输入格式。
DATE_ADDDATE_ADD(date, days)
将指定的天数(可为负数)加到日期上,返回新的日期。
DATE_SUBDATE_SUB(date, days)
将指定的天数(可为负数)从日期中减去,返回新的日期。
DATEDIFFDATEDIFF(endDate, startDate)
计算两个日期之间的天数差值。
TRUNCTRUNC(date, format)
截断日期,将日期的时间部分置为0,可指定输出格式。
DATE_FORMATDATE_FORMAT(date, format)
将日期格式化为指定的字符串,可使用标准的日期格式模式。
ADD_MONTHSADD_MONTHS(date, numMonths)
将指定的月份数(可为负数)加到日期上,返回新的日期。
LAST_DAYLAST_DAY(date)
返回日期所在月份的最后一天。

4 流程控制函数

函数名用法
IF(condition, value_if_true, value_if_false)如果condition为true,返回value_if_true,否则返回value_if_false。例如:IF(col1 > col2, ‘greater’, ‘less or equal’)
CASE expr WHEN value1 THEN result1 [WHEN value2 THEN result2 …] [ELSE resultN] END类似于SQL中的CASE语句,根据expr的值匹配相应的value和result。例如:CASE WHEN col1 > 0 THEN ‘positive’ WHEN col1 < 0 THEN ‘negative’ ELSE ‘zero’ END
COALESCE(value1, value2, …)返回第一个非NULL的值。例如:COALESCE(col1, col2, col3, ‘N/A’)
NULLIF(expr1, expr2)如果expr1和expr2相等,则返回NULL,否则返回expr1。常用于处理除数为零的情况。例如:NULLIF(col1, 0)
NVL(expr1, expr2) 或 IFNULL(expr1, expr2)如果expr1为NULL,则返回expr2,否则返回expr1。例如:NVL(col1, ‘unknown’) 或 IFNULL(col1, ‘unknown’)
DECODE(expr, search1, result1, search2, result2, …, default)类似于CASE语句,根据expr的值匹配相应的search和result,如果没有匹配到,则返回default值。例如:DECODE(col1, 1, ‘one’, 2, ‘two’, ‘other’)

5 集合函数

数名用法
COLLECT_LIST(expr)将表达式expr的值作为一个列表返回,可以用于合并同一分组内的多个行的值
COLLECT_SET(expr)将表达式expr的值作为一个集合返回,集合中不包含重复的值
SIZE(array)返回数组array的长度
ARRAY_CONTAINS(array, value)判断数组array中是否包含值value,返回布尔值
ARRAY_JOIN(array, delimiter)将数组array中的元素使用指定的分隔符delimiter连接成一个字符串返回
MAP_KEYS(map)返回map中所有的键组成的数组
MAP_VALUES(map)返回map中所有的值组成的数组
MAP_CONCAT(map1, map2)将两个map合并成一个map并返回
POSEXPLODE(array)将数组array中的每个元素及其下标作为多个行返回
INLINE(array_of_structs)将数组中的结构体展开成多个行,并将结构体中的字段展示为多个列
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值