Hive2.0常用函数(对编辑器很无语😓)
Hive内部提供了很多函数给开发者使用,包括数学函数,类型转换函数,条件函数,字符函数,聚合函数,表生成函数等等,这些函数都统称为内置函数。
| Return Type | Name(Signature) | Description | 
| int | ascii(string str) | 返回str中首个ASCII字符串的整数值 | 
| string | base64(binary bin) | 将二进制bin转换成64位的字符串 | 
| string | concat(string|binary A,  string|binary B...) | 对二进制字节码或字符串按次序进行拼接 | 
| array<struct<string,double>> | context_ngrams(array<array<string>>,  array<string>,  int K, int pf) | |
| string | concat_ws(string SEP,  string A,  string B...) | 与concat()类似,但使用指定的分隔符喜进行分隔 | 
| string | concat_ws(string SEP, array<string>) | 拼接Array中的元素并用指定分隔符进行分隔 | 
| string | decode(binary bin, string charset) | 使用指定的字符集charset将二进制值bin解码成字符串,支持的字符集有:'US-ASCII', 'ISO-8859-1', 'UTF-8', 'UTF-16BE', 'UTF-16LE', 'UTF-16',如果任意输入参数为NULL都将返回NULL | 
| binary | encode(string src, string charset) | 使用指定的字符集charset将字符串编码成二进制值,支持的字符集有:'US-ASCII', 'ISO-8859-1', 'UTF-8', 'UTF-16BE', 'UTF-16LE', 'UTF-16',如果任一输入参数为NULL都将返回NULL | 
| int | find_in_set(string str, string strList) | 返回以逗号分隔的字符串中str出现的位置,如果参数str为逗号或查找失败将返回0,如果任一参数为NULL将返回NULL回 | 
| string | format_number(number x, int d) | 将数值X转换成"#,###,###.##"格式字符串,并保留d位小数,如果d为0,将进行四舍五入且不保留小数 | 
| string | get_json_object(string json_string,  string path) | 从指定路径上的JSON字符串抽取出JSON对象,并返回这个对象的JSON格式,如果输入的JSON是非法的将返回NULL,注意此路径上JSON字符串只能由数字 字母 下划线组成且不能有大写字母和特殊字符,且key不能由数字开头,这是由于Hive对列名的限制 | 
| boolean | in_file(string str, string filename) | 如果文件名为filename的文件中有一行数据与字符串str匹配成功就返回true | 
| int | instr(string str, string substr) | 查找字符串str中子字符串substr出现的位置,如果查找失败将返回0,如果任一参数为Null将返回null,注意位置为从1开始的 | 
| int | length(string A) | 返回字符串的长度 | 
| int | locate(string substr, string str[, int pos]) | 查找字符串str中的pos位置后字符串substr第一次出现的位置 | 
| string | lower(string A) lcase(string A) | 将字符串A的所有字母转换成小写字母 | 
| string | lpad(string str, int len, string pad) | 从左边开始对字符串str使用字符串pad填充,最终len长度为止,如果字符串str本身长度比len大的话,将去掉多余的部分 | 
| string | ltrim(string A) | 去掉字符串A前面的空格 | 
| array<struct<string, double>> | ngrams(array<array<string>>,  int N, int K,  int pf) | |
| string | parse_url(string urlString,  string partToExtract [, string keyToExtract]) | 返回从URL中抽取指定部分的内容,参数url是URL字符串,而参数partToExtract是要抽取的部分。这个参数包含(HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE, and USERINFO,例如:parse_url('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1', 'HOST') ='facebook.com',如果参数partToExtract值为QUERY则必须指定第三个参数key  如:parse_url('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1', 'QUERY', 'k1') =‘v1’ | 
| string | printf(String format, Obj... args) | 按照printf风格格式输出字符串 | 
| string | regexp_extract(string subject,  string pattern,  int index) | 抽取字符串subject中符合正则表达式pattern的第index个部分的子字符串,注意些预定义字符的使用,如第二个参数如果使用'\s'将被匹配到s,'\\s'才是匹配空格 | 
| string | regexp_replace(string INITIAL_STRING,  string PATTERN,  string REPLACEMENT) | 按照Java正则表达式PATTERN将字符串INTIAL_STRING中符合条件的部分成REPLACEMENT所指定的字符串,如里REPLACEMENT这空的话,抽符合正则的部分将被去掉  如:regexp_replace("foobar", "oo|ar", "") = 'fb.' 注意些预定义字符的使用,如第二个参数如果使用'\s'将被匹配到s,'\\s'才是匹配空格 | 
| string | repeat(string str, int n) | 重复输出n次字符串str | 
| string | reverse(string A) | 反转字符串 | 
| string | rpad(string str, int len, string pad) | 从右边开始对字符串str使用字符串pad填充,最终len长度为止,如果字符串str本身长度比len大的话,将去掉多余的部分 | 
| string | rtrim(string A) | 去掉字符串后面出现的空格 | 
| array<array<string>> | sentences(string str, string lang, string locale) | 字符串str将被转换成单词数组,如:sentences('Hello there! How are you?') =( ("Hello", "there"), ("How", "are", "you") ) | 
| string | space(int n) | 返回n个空格 | 
| array | split(string str, string pat) | 按照正则表达式pat来分割字符串str,并将分割后的数组字符串的形式返回 | 
| map<string,string> | str_to_map(text[, delimiter1,  delimiter2]) | 将字符串str按照指定分隔符转换成Map,第一个参数是需要转换字符串,第二个参数是键值对之间的分隔符,默认为逗号;第三个参数是键值之间的分隔符,默认为"=" | 
| string | substr(string|binary A, int start) substring(string|binary A, int start)  | 对于字符串A,从start位置开始截取字符串并返回 | 
| string | substr(string|binary A, int start, int len)  substring(string|binary A,  int start,  int len) | 对于二进制/字符串A,从start位置开始截取长度为length的字符串并返回 | 
| string | substring_index(string A,  string delim,  int count) | 截取第count分隔符之前的字符串,如count为正则从左边开始截取,如果为负则从右边开始截取 | 
| string | translate(string|char|varchar input,  string|char|varchar from,  string|char|varchar to) | 将input出现在from中的字符串替换成to中的字符串 如:translate("MOBIN","BIN","M")="MOM" | 
| string | trim(string A) | 将字符串A前后出现的空格去掉 | 
| binary | unbase64(string str) | 将64位的字符串转换二进制值 | 
| string | upper(string A) ucase(string A) | 将字符串A中的字母转换成大写字母 | 
| string | initcap(string A) | 将字符串A转换第一个字母大写其余字母的字符串 | 
| int | levenshtein(string A, string B) | 计算两个字符串之间的差异大小  如:levenshtein('kitten', 'sitting') = 3 | 
| string | soundex(string A) | 将普通字符串转换成soundex字符串 | 
类型转换函数
| Return Type | Name(Signature) | Description | 
| binary | binary(string|binary) | 将输入的值转换成二进制 | 
| Expected "=" to follow "type" | cast(expr as <type>) | 将expr转换成type类型 如:cast("1" as BIGINT) 将字符串1转换成了BIGINT类型,如果转换失败将返回NULL | 
日期函数
| Return Type | Name(Signature) | Description | 
| string | from_unixtime(bigint unixtime[,  string format]) | 将时间的秒值转换成format格式(format可为“yyyy-MM-dd hh:mm:ss”,“yyyy-MM-dd hh”,“yyyy-MM-dd hh:mm”等等)如from_unixtime(1250111000,"yyyy-MM-dd") 得到2009-03-12 | 
| bigint | unix_timestamp() | 获取本地时区下的时间戳 | 
| bigint | unix_timestamp(string date) | 将格式为yyyy-MM-dd HH:mm:ss的时间字符串转换成时间戳  如unix_timestamp('2009-03-20 11:30:01') = 1237573801 | 
| bigint | unix_timestamp(string date,  string pattern) | 将指定时间字符串格式字符串转换成Unix时间戳,如果格式不对返回0 如:unix_timestamp('2009-03-20', 'yyyy-MM-dd') = 1237532400 | 
| string | to_date(string timestamp) | 返回时间字符串的日期部分 | 
| int | year(string date) | 返回时间字符串的年份部分 | 
| int | quarter(date/timestamp/string) | 返回当前时间属性哪个季度 如quarter('2015-04-08') = 2 | 
| int | month(string date) | 返回时间字符串的月份部分 | 
| int | day(string date) dayofmonth(date) | 返回时间字符串的天 | 
| int | hour(string date) | 返回时间字符串的小时 | 
| int | minute(string date) | 返回时间字符串的分钟 | 
| int | second(string date) | 返回时间字符串的秒 | 
| int | weekofyear(string date) | 返回时间字符串位于一年中的第几个周内  如weekofyear("1970-11-01 00:00:00") = 44, weekofyear("1970-11-01") = 44 | 
| int | datediff(string enddate, string startdate) | 计算开始时间startdate到结束时间enddate相差的天数 | 
| string | date_add(string startdate, int days) | 从开始时间startdate加上days | 
| string | date_sub(string startdate, int days) | 从开始时间startdate减去days | 
| timestamp | from_utc_timestamp(timestamp,  string timezone) | 如果给定的时间戳并非UTC,则将其转化成指定的时区下时间戳 | 
| timestamp | to_utc_timestamp(timestamp,  string timezone) | 如果给定的时间戳指定的时区下时间戳,则将其转化成UTC下的时间戳 | 
| date | current_date | 返回当前时间日期 | 
| timestamp | current_timestamp | 返回当前时间戳 | 
| string | add_months(string start_date,  int num_months) | 返回当前时间下再增加num_months个月的日期 | 
| string | last_day(string date) | 返回这个月的最后一天的日期,忽略时分秒部分(HH:mm:ss) | 
| string | next_day(string start_date,  string day_of_week) | 返回当前时间的下一个星期X所对应的日期 如:next_day('2015-01-14', 'TU') = 2015-01-20  以2015-01-14为开始时间,其下一个星期二所对应的日期为2015-01-20 | 
| string | trunc(string date, string format) | 返回时间的最开始年份或月份  如trunc("2016-06-26",“MM”)=2016-06-01  trunc("2016-06-26",“YY”)=2016-01-01   注意所支持的格式为MONTH/MON/MM, YEAR/YYYY/YY | 
| double | months_between(date1, date2) | 返回date1与date2之间相差的月份,如date1>date2,则返回正,如果date1<date2,则返回负,否则返回0.0  如:months_between('1997-02-28 10:30:00', '1996-10-30') = 3.94959677  1997-02-28 10:30:00与1996-10-30相差3.94959677个月 | 
| string | date_format(date/timestamp/string ts,  string fmt) | 按指定格式返回时间date 如:date_format("2016-06-22","MM-dd")=06-22 | 
条件函数
| Return Type | Name(Signature) | Description | 
| T | if(boolean testCondition,  T valueTrue,  T valueFalseOrNull) | 如果testCondition 为true就返回valueTrue,否则返回valueFalseOrNull ,(valueTrue,valueFalseOrNull为泛型)  | 
| T | nvl(T value, T default_value) | 如果value值为NULL就返回default_value,否则返回value | 
| T | COALESCE(T v1, T v2, ...) | 返回第一非null的值,如果全部都为NULL就返回NULL  如:COALESCE (NULL,44,55)=44/strong> | 
| T | CASE a WHEN b THEN c [WHEN d THEN e]* [ELSE f] END | 如果a=b就返回c,a=d就返回e,否则返回f  如CASE 4 WHEN 5  THEN 5 WHEN 4 THEN 4 ELSE 3 END 将返回4 | 
| T | CASE WHEN a THEN b [WHEN c THEN d]* [ELSE e] END | 如果a=ture就返回b,c= ture就返回d,否则返回e  如:CASE WHEN  5>0  THEN 5 WHEN 4>0 THEN 4 ELSE 0 END 将返回5;CASE WHEN  5<0  THEN 5 WHEN 4<0 THEN 4 ELSE 0 END 将返回0 | 
| boolean | isnull( a ) | 如果a为null就返回true,否则返回false | 
| boolean | isnotnull ( a ) | 如果a为非null就返回true,否则返回false | 
数学函数
| Return Type | Name (Signature) | Description | 
| DOUBLE | round(DOUBLE a) | 返回对a四舍五入的BIGINT值 | 
| DOUBLE | round(DOUBLE a, INT d) | 返回DOUBLE型d的保留n位小数的DOUBLW型的近似值 | 
| DOUBLE | bround(DOUBLE a) | 银行家舍入法(1~4:舍,6~9:进,5->前位数是偶:舍,5->前位数是奇:进) | 
| DOUBLE | bround(DOUBLE a, INT d) | 银行家舍入法,保留d位小数 | 
| BIGINT | floor(DOUBLE a) | 向下取整,最数轴上最接近要求的值的左边的值  如:6.10->6   -3.4->-4 | 
| BIGINT | ceil(DOUBLE a), ceiling(DOUBLE a) | 求其不小于小给定实数的最小整数如:ceil(6) = ceil(6.1)= ceil(6.9) = 6 | 
| DOUBLE | rand(), rand(INT seed) | 每行返回一个DOUBLE型随机数seed是随机因子 | 
| DOUBLE | exp(DOUBLE a), exp(DECIMAL a) | 返回e的a幂次方, a可为小数 | 
| DOUBLE | ln(DOUBLE a), ln(DECIMAL a) | 以自然数为底d的对数,a可为小数 | 
| DOUBLE | log10(DOUBLE a), log10(DECIMAL a) | 以10为底d的对数,a可为小数 | 
| DOUBLE | log2(DOUBLE a), log2(DECIMAL a) | 以2为底数d的对数,a可为小数 | 
| DOUBLE | log(DOUBLE base, DOUBLE a) log(DECIMAL base, DECIMAL a) | 以base为底的对数,base 与 a都是DOUBLE类型 | 
| DOUBLE | pow(DOUBLE a, DOUBLE p),  power(DOUBLE a, DOUBLE p) | 计算a的p次幂 | 
| DOUBLE | sqrt(DOUBLE a), sqrt(DECIMAL a) | 计算a的平方根 | 
| STRING | bin(BIGINT a) | 计算二进制a的STRING类型,a为BIGINT类型 | 
| STRING | hex(BIGINT a)  hex(STRING a)  hex(BINARY a) | 计算十六进制a的STRING类型,如果a为STRING类型就转换成字符相对应的十六进制 | 
| BINARY | unhex(STRING a) | hex的逆方法 | 
| STRING | conv(BIGINT num, INT from_base, INT to_base),  conv(STRING num, INT from_base, INT to_base) | 将GIGINT/STRING类型的num从from_base进制转换成to_base进制 | 
| DOUBLE | abs(DOUBLE a) | 计算a的绝对值 | 
| INT or DOUBLE | pmod(INT a, INT b),  | a对b取模 | 
| DOUBLE | sin(DOUBLE a), sin(DECIMAL a) | 求a的正弦值 | 
| DOUBLE | asin(DOUBLE a), asin(DECIMAL a) | 求d的反正弦值 | 
| DOUBLE | cos(DOUBLE a), cos(DECIMAL a) | 求余弦值 | 
| DOUBLE | acos(DOUBLE a), acos(DECIMAL a) | 求反余弦值 | 
| DOUBLE | tan(DOUBLE a), tan(DECIMAL a) | 求正切值 | 
| DOUBLE | atan(DOUBLE a), atan(DECIMAL a) | 求反正切值 | 
| DOUBLE | degrees(DOUBLE a),  | 奖弧度值转换角度值 | 
| DOUBLE | radians(DOUBLE a), radians(DOUBLE a) | 将角度值转换成弧度值 | 
| INT or DOUBLE | positive(INT a), positive(DOUBLE a) | 返回a | 
| INT or DOUBLE | negative(INT a), negative(DOUBLE a) | 返回a的相反数 | 
| DOUBLE or INT | sign(DOUBLE a), sign(DECIMAL a) | 如果a是正数则返回1.0,是负数则返回-1.0,否则返回0.0 | 
| DOUBLE | e() | 数学常数e | 
| DOUBLE | pi() | 数学常数pi | 
| BIGINT | factorial(INT a) | 求a的阶乘 | 
| DOUBLE | cbrt(DOUBLE a) | 求a的立方根 | 
| INT BIGINT | shiftleft(TINYINT|SMALLINT|INT a, INT b) | 按位左移 | 
| shiftleft(BIGINT a, INT b) | ||
| INT | shiftright(TINYINT|SMALLINT|INT a, INTb) | 按拉右移 | 
| BIGINT | shiftright(BIGINT a, INT b) | |
| INT | shiftrightunsigned(TINYINT|SMALLINT|INTa,  INT b), | 无符号按位右移(<<<) | 
| BIGINT | shiftrightunsigned(BIGINT a, INT b) | |
| T | greatest(T v1, T v2, ...) | 求最大值 | 
| T | least(T v1, T v2, ...) | 求最小值 | 
集合函数
| Return Type | Name(Signature) | Description | 
| int | size(Map<K.V>) | 求map的长度 | 
| int | size(Array<T>) | 求数组的长度 | 
| array<K> | map_keys(Map<K.V>) | 返回map中的所有key | 
| array<V> | map_values(Map<K.V>) | 返回map中的所有value | 
| boolean | array_contains(Array<T>, value) | 如该数组Array<T>包含value返回true。,否则返回false | 
| array | sort_array(Array<T>) | 按自然顺序对数组进行排序并返回 | 
聚合函数
| Return Type | Name(Signature) | Description | 
| BIGINT | count(*) | 统计总行数,包括含有NULL值的行 | 
| count(expr) | 统计提供非NULL的expr表达式值的行数 | |
| count(DISTINCT expr[, expr...]) | 统计提供非NULL且去重后的expr表达式值的行数 | |
| DOUBLE | sum(col), sum(DISTINCT col) | sum(col),表示求指定列的和,sum(DISTINCT col)表示求去重后的列的和 | 
| DOUBLE | avg(col), avg(DISTINCT col) | avg(col),表示求指定列的平均值,avg(DISTINCT col)表示求去重后的列的平均值 | 
| DOUBLE | min(col) | 求指定列的最小值 | 
| DOUBLE | max(col) | 求指定列的最大值 | 
| DOUBLE | variance(col), var_pop(col) | 求指定列数值的方差 | 
| DOUBLE | var_samp(col) | 求指定列数值的样本方差 | 
| DOUBLE | stddev_pop(col) | 求指定列数值的标准偏差 | 
| DOUBLE | stddev_samp(col) | 求指定列数值的样本标准偏差 | 
| DOUBLE | covar_pop(col1, col2) | 求指定列数值的协方差 | 
| DOUBLE | covar_samp(col1, col2) | 求指定列数值的样本协方差 | 
| DOUBLE | corr(col1, col2) | 返回两列数值的相关系数 | 
| DOUBLE |  percentile(BIGINT col, p) | 返回col的p%分位数 | 
表生成函数
| Return Type | Name(Signature) | Description | 
| Array Type | explode(array<TYPE> a) | 对于a中的每个元素,将生成一行且包含该元素 | 
| N rows | explode(ARRAY) | 每行对应数组中的一个元素 | 
| N rows | explode(MAP) | 每行对应每个map键-值,其中一个字段是map的键,另一个字段是map的值 | 
| N rows | posexplode(ARRAY) | 与explode类似,不同的是还返回各元素在数组中的位置 | 
| N rows | stack(INT n, v_1, v_2, ..., v_k) | 把M列转换成N行,每行有M/N个字段,其中n必须是个常数 | 
| tuple | json_tuple(jsonStr, k1, k2, ...) | 从一个JSON字符串中获取多个键并作为一个元组返回,与get_json_object不同的是此函数能一次获取多个键值 | 
| tuple | parse_url_tuple(url, p1, p2, ...) | 返回从URL中抽取指定N部分的内容,参数url是URL字符串,而参数p1,p2,....是要抽取的部分,这个参数包含HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE, USERINFO, QUERY:<KEY> | 
| inline(ARRAY<STRUCT[,STRUCT]>) | 将结构体数组提取出来并插入到表中 | 
Hive2.0常用函数(对编辑器很无语😓)的更多相关文章
- Opencv 3.3.0 常用函数
		如何调图像的亮度和对比度? //如何增加图片的对比度或亮度? void contrastOrBrightAdjust(InputArray &src,OutputArray &dst, ... 
- Delphi7.0常用函数-属性-事件
		abort 函数 引起放弃的意外处理 addexitproc 函数 将一过程添加到运行时库的结束过程表中 addr 函数 返回指定对象的地址 adjustlinebreaks 函数 将给定字符串的行分 ... 
- Delphi 7.0常用函数速查手册(磁盘文件类)
		在Delphi 7.0中,已为我们定义好了非常多的函数,大致分类有6种:数据类型转换函数.字符串.数组操作函数.文件.磁盘操作函数.内存.指针操作函数.数学运算函数.日期函数. 在Delphi中调用函 ... 
- selenium2.0 --常用函数2
		新建实例driver = webdriver.Chrome() 1.获取当前页面的Url函数 方法:current_url 实例: driver.current_url 2.获取元素坐标 方法:loc ... 
- 【Linux 应用编程】文件IO操作 - 常用函数
		Linux 系统中的各种输入输出,设计为"一切皆文件".各种各样的IO统一用文件形式访问. 文件类型及基本操作 Linux 系统的大部分系统资源都以文件形式提供给用户读写.这些文件 ... 
- Python 数据类型,常用函数方法分类
		Python基本数据类型:(int) 字符串(str)列表(list)元组(tuple)字典(dict)布尔(bool) python中可以简单使用 类型(数据)创建或转换数据 例: #字符串转数字 ... 
- hive2.0函数大全
		Hive2.0函数大全(中文版) 摘要 Hive内部提供了很多函数给开发者使用,包括数学函数,类型转换函数,条件函数,字符函数,聚合函数,表生成函数等等,这些函数都统称为内置函数. 目录 数学函数 ... 
- Visual Assist X 10.6.1830.0 常用快捷键
		Visual Assist X 10.6.1830.0 常用快捷键 1.Alt + G: 在定义与声明之间互跳. 2.Alt + O: 在.h与.cpp之间互跳.(O是字母O,不是数字零) 3.Alt ... 
- VC API常用函数简单例子大全(1-89)
		第一个:FindWindow根据窗口类名或窗口标题名来获得窗口的句柄,该函数返回窗口的句柄 函数的定义:HWND WINAPI FindWindow(LPCSTR lpClassName ,LPCST ... 
随机推荐
- supervieord的使用
			用途 守护进程,帮你管理其他进程,让其他进程成为后台进程 监控进程是否死掉,自动重启: 管理进程的启动,停止: 对进程输出的日志进行管理 每个进程使用不同的用户启动,这样可以使进程获得不同用户的权限 ... 
- java 注解@interface
			类注解: package com.cglibs; import java.lang.annotation.ElementType; import java.lang.annotation.Retent ... 
- 机器学习笔记——k-近邻算法(一)简单代码
			一 import numpy as np ##初始化数据 T = [[3, 104, -1], [2, 100, -1], [1, 81, -1], [101, 10, 1], [99, 5, 1], ... 
- 【ARM-Linux开发】ARM7 ARM9 ARM Cortex M3 M4 有什么区别
			ARM7 ARM9 ARM Cortex M3 M4 区别 arm7 arm9 可以类比386和奔腾, 不同代,arm9相比arm7指令集和性能都有所增强,arm7和arm9都有带mmu和无mmu的版 ... 
- linux netfilter
			yum -y install iptables//三张表 filter nat mangle [root@wang /]# iptables -t filter -nvL [root@wang /]# ... 
- C++零散知识笔记本
			目录 1.符号 1.1符号输出 1.2运算符 2.基本内置类型 wchar_t 3.内置类型所占字节数 内置类型的简写 4.变量的本质 变量与指针的故事 (1)malloc函数 (2)new关键字 5 ... 
- React Native 中 component 生命周期
			React Native 中 component 生命周期 转自 csdn 子墨博客 http://blog.csdn.net/ElinaVampire/article/details/518136 ... 
- JAVA日常之四
			构造函数 又称“构建器”,函数名称与类名称完全相同,无返回值. 每个类都有构造函数. 可以自定义构造函数,并且可以创建多个重载/过载的构造函数. 若没有手动创建该函数,总会存在一个默认的构造函数(无参 ... 
- Dom4j 生成xml并格式化
			Document document = DocumentHelper.createDocument(); //创建root Element root = document.addEle ... 
- 14.shell脚本学习
			简单的执行跟踪,会使得Shell显示每个被执行到的命令sh -x delete.sh 查找与替换grepsed -i "s/t_rs_customer/t_rs_customer_bak/g ... 
