一、Aggregate--聚合类
1、avg(col)--返回某一列的平均值
2、count([DISTINCT] col) --对某一列计数
3、stddev_pop(col) --返回某一列的标准偏差
4、stddev_samp(col) --返回数据列无偏样本的标准偏差
5、sum(col)
6、max(col)
7、min(col)
8、corr(col1, col2) --返回两列的皮尔逊相关系数
9、covar_pop(col1, col2) --返回两列数据的总体协方差
10、covar_samp(col1, col2)--返回两列数据样本的协方差
11、collect_set(col) --返回一组消除了重复元素的对象,返回的是一个集合
12、collect_list(col)--返回具有重复项的对象列表
13、histogram_numeric(col, b) --返回array
14、ntile(INT x) --该函数将已经排序的分区分到x个桶中,并为每行分配一个桶号。这可以容易的计算三分位,四分位,十分位,百分位和其它通用的概要统计
15、percentile(BIGINT col, p) --返回组中列的精确第p个百分点(不适用于浮点类型)。 p必须介于0和1之间。注意:真正的百分位数只能用整数值计算。如果您的输入不是整数,请使用PERCENTILE_APPROX。
16、percentile(BIGINT col, array(p1 [, p2]...)) --返回array类型,返回组内某个列精确的第p1,p2,……位百分数,p必须在0和1之间,同上
16、percentile_approx(DOUBLE col, p [, B]) --返回组中数值列(包括浮点类型)的近似pth百分点(或百分点p1,p2,..)。 B参数以内存为代价控制逼近精度。较高的值会产生更好的近似值,默认值为10,000。当col中不同值的数量小于B时,这会得出确切的百分位数值。
17、percentile_approx(DOUBLE col, array(p1 [, p2]...) [, B]) --返回array,同上,可以返回多个百分点
18、variance(col)--返回组中数字列的方差
19、var_pop(col) --返回组中数字列的方差。
20、var_samp(col) --返回组中数字列的无偏样本方差。
21、regr_avgx(T independent, T dependent) --计算回归线的自变量(expr2)的平均值,去掉了空对(expr1, expr2)后,等于AVG(expr2)。截至Hive 2.2.0。
22、regr_avgy(T independent, T dependent) --计算回归线的应变量(expr1)的平均值,去掉了空对(expr1, expr2)后,等于AVG(expr1)。截至Hive 2.2.0
23、regr_count(T independent, T dependent) --返回用于拟合线性回归线的非空对数。截至Hive 2.2.0。
24、regr_intercept(T independent, T dependent) --返回线性回归的直线的y轴截距,即方程中的b值取决于= a *独立+ b。截至Hive 2.2.0。
25、regr_r2(T independent, T dependent) --返回回归的确定系数。截至Hive 2.2.0。
26、regr_slope(T independent, T dependent)--返回线性回归线的斜率,即方程式中的a值依赖于=a*独立+ b。截至Hive 2.2.0。
27、regr_sxx(T independent, T dependent)--返回值等于REGR_COUNT(expr1, expr2) * VAR_POP(expr2)
28、regr_sxy(T independent, T dependent) --返回值等于REGR_COUNT(expr1, expr2) * COVAR_POP(expr1, expr2)
29、regr_syy(T independent, T dependent) --返回值等于REGR_COUNT(expr1, expr2) * VAR_POP(expr1)
二、Analytic--分析函数
1、cume_dist() --计算一行在组中的相对位置,CUME_DIST总是返回大于0、小于或等于1的数,该数表示该行在N行中的位置
例子:
2、dense_rank() OVER([partition_by_clause] order_by_clause) --返回从1开始的递增整数序列。输出序列为ORDER BY表达式的重复值生成重复整数。
例:
3、first_value() OVER([partition_by_clause] order_by_clause [window_clause]) --从窗口的第一行返回表达式值。如果输入表达式为NULL,则返回值为NULL。
例:
4、lag(expr [,offset] [,default]) OVER() ([partition_by_clause] order_by_clause) --该函数使用前一行的列值返回表达式的值。您可以指定一个整数偏移量,它指定一个行位置,位于当前行之前的某些行数。表达式参数中的任何列引用都引用该前一行中的列值。
例:
5、last_value(expr) OVER([partition_by_clause] order_by_clause [window_clause]) --返回窗口中最后一行的表达式值。如果输入表达式为NULL,返回值为NULL。
例:
6、lead(expr[,offset] [,default]) OVER([partition_by_clause] order_by_clause) --此函数使用以下行的列值返回表达式的值。指定一个整数偏移量,它指定行位置到当前行之后的若干行。表达式参数中的任何列引用都引用来自后面的行的列值。
例:
7、percent_rank() --按百分比排序
例:
8、rank() OVER([partition_by_clause] order_by_clause) --返回整数的升序,从1开始。输出序列为表达式的重复值生成重复整数。在为“绑定”输入值生成重复输出值之后,函数通过绑定值的数量来增加序列。
例:
9、row_number() OVER([partition_by_clause] order_by_clause) --分组排序,同一组内相同值会给不同序号
三、Collection--集合函数
1、array_contains(Arraya,val) --如果数组内包含val,返回True例:
如果fullname这一列不是数组形式,先用array()函数转化下
1selectarray_contains(array(fullname),'a') fromods.baseorganize
2、map_keys(Map a)--返回map中的所有key,返回类型array
1selectmap_keys(complaintDetail) fromtmp.crm_data_customer_complain
3、map_values(Map a)--返回map中的所有values,返回类型array
4、size(Map|Array a)--返回映射或数组类型中的元素数目。
5、sort_array(Array a)--根据数组元素的自然排序将输入数组按升序排序,并返回数组。
四、Complex Type--复合类型
1、array(val1,val2....) --创建具有给定元素的数组2、create_union(tag,val1,val2,...) --用标记参数指向的值创建一个联合类型3、map(key1, value1, ...) --创建具有给定键/值对的映射。4、named_struct(name1, val1, ...) --用给定的字段名和值创建结构。注意:这里的name和val只能是给定的值,用已有的列不行
5、struct(val1, val2, ...) --创建具有给定字段值的结构。这里的val可以是已有的列,也可以是给定的值
五、Conditional--有条件的函数
1、assert_true(BOOLEAN condition) --如果成立返回NULL,如果不成立报异常
2、coalesce(T v1, T v2, ...) --返回其参数中的第一个非空表达式,当你要在n个字段中选取某一个非空值
例:
3、if()
4、isnotnull(a) --如果不是NULL返回TRUE,否则返回FALSE
5、isnull(a) --如果是NULL返回TRUE,否则返回FALSE
6、nullif(a, b) --如果a=b,返回NULL,否则返回a
7、nvl(T value, T default_value) --如果value是空,返回default_value,否则返回value
六、Date---日期函数
1、add_months(DATE|STRING|TIMESTAMP start_date, INT num_months) --返回开始日期之后的num_months,开始日期可以是date型,string型,TIMESTAMP型的,num_months是整形的
2、current_date --返回当前日期,同一个查询中返回的是同一个日期
3、current_timestamp() --返回当前的时间戳,同一个查询中返回的是同一个时间戳
4、datediff(STRING enddate, STRING startdate) --返回结束日期和开始日期之间的间隔天数
5、date_add(DATE startdate, INT days) --开始日期加几天
6、date_format(DATE|TIMESTAMP|STRING ts, STRING fmt) --按指定格式返回时间date 如:date_format("2016-06-22","MM-dd")=06-22
7、date_sub(DATE startdate, INT days) --开始日期减几天
8、day(STRING date) --返回一个date或TIMESTAMP的日,例:day('1970-11-01 00:00:00') = 1, day('1970-11-01') = 1
9、dayofmonth(STRING date) --同上
10、extract(field FROM source) --返回日期/时间的单独部分,比如年、月、日、小时、分钟等等
支持提取的类型有:day, dayofweek, hour, minute, month, quarter, second, week and year.
11、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
12、from_utc_timestamp(T a, STRING timezone) --如果给定的时间戳并非UTC,则将其转化成指定的时区下时间戳
13、hour(STRING date) --返回时间字符串小时
14、last_day(STRING date) --返回这个月的最后一天的日期,忽略时分秒部分(HH:mm:ss)
15、minute(STRING date) --返回时间字符串的分钟
16、month(STRING date) --返回时间字符串的月
17、months_between(DATE|TIMESTAMP|STRING date1, DATE|TIMESTAMP|STRING date2)
--返回date1与date2之间相差的月份,如date1>date2,则返回正,如果date1
18、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
19、quarter(DATE|TIMESTAMP|STRING a) --返回当前时间属于哪个季度
20、second(STRING date) --返回时间字符串的秒
21、to_date(STRING timestamp) --返回字符串的日期部分,结果1970-01-01这种形式
22、to_utc_timestamp(T a, STRING timezone) --如果给定指定的时区下时间戳,则将其转化成UTC下的时间戳
23、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
24、unix_timestamp([STRING date [, STRING pattern]]) --获取本地时区下的时间戳
25、weekofyear(STRING date) --返回时间字符串位于一年中的第几个周内 如weekofyear("1970-11-01 00:00:00") = 44, weekofyear("1970-11-01") = 44
26、year(STRING date)--返回时间字符串的年份部分
七、Mathematical--数学函数
1、abs(DOUBLE a) --求绝对值
2、acos(DECIMAL|DOUBLE a) --求反余弦值,a介于-1到1之间,否则返回NULL值
3、asin(DECIMAL|DOUBLE a)--求反正弦值,a介于-1到1之间,否则返回NULL值
4、atan(DECIMAL|DOUBLE a) --求反正切值
5、bin(BIGINT a) --计算二进制a的STRING类型,a为BIGINT类型
6、bround(DOUBLE a [, INT decimals]) --银行家舍入法(1~4:舍,6~9:进,5->前位数是偶:舍,5->前位数是奇:进)
7、cbrt(DOUBLE a) --求a的立方根
8、ceil(DOUBLE a) --求其不小于小给定实数的最小整数如:ceil(6) =ceil(6.9) = 6
9、ceiling(DOUBLE a) --同上
10、conv(BIGINT|STRING a, INT from_base, INT to_base) --将GIGINT/STRING类型的num从from_base进制转换成to_base进制
11、cos(DECIMAL|DOUBLE a) --求余弦值
12、degrees(DECIMAL|DOUBLE a) --将弧度值转换角度值
13、e() --返回常数e
14、exp(DECIMAL|DOUBLE a) --返回e的a幂次方, a可为小数
15、factorial(INT a) --求a的阶乘
16、floor(DOUBLE a) --向下取整,最数轴上最接近要求的值的左边的值 6.10->6 -3.4->-4
17、greatest(T a1, T a2, ...) --求最大值
18、hex(BIGINT|BINARY|STRING a) --计算十六进制a的STRING类型,如果a为STRING类型就转换成字符相对应的十六进制
19、least(T a1, T a2, ...) --求最小值,返回值列表的最小值。当一个或多个参数为NULL时固定为返回null,并且严格的类型限制放宽,与“<”运算符一致。
20、ln(DECIMAL|DOUBLE a) --返回a的自然对数
21、log(DECIMAL|DOUBLE base, DECIMAL|DOUBLE a) --以base为底的对数,base 与 a都是DOUBLE类型
22、log10(DECIMAL|DOUBLE a) --返回以10为底a的对数
23、log2(DECIMAL|DOUBLE a) --返回以2为底a的对数
24、negative(T a) --返回-a
25、pi()--返回π
26、pmod(T a, T b) --a对b取模
27、positive(T a) --返回a,觉得这个函数完全没有意义
28、pow(DOUBLE a, DOUBLE p) --返回a的p次方
29、pow(DOUBLE a, DOUBLE p)--返回a的p次幂,同上
30、radians(DECIMAL|DOUBLE a) --将角度值转换成弧度值
31、rand([INT seed]) --每行返回一个DOUBLE型随机数,seed是随机因子
32、round(DOUBLE a [, INT d]) --返回对a四舍五入的BIGINT值
33、shiftleft(T a, INT b) --按位左移
34、shiftright(T a, INT b) --按位右移
35、shiftrightunsigned(T a, INT b) --无符号按位右移(<<<)
36、sign(T a) --如果a是正数则返回1.0,是负数则返回-1.0,否则返回0.0
37、sin(DECIMAL|DOUBLE a) --返回a的正弦
38、sqrt(DECIMAL|DOUBLE a)--返回a的平方根
39、tan(DECIMAL|DOUBLE a) --返回a的正切值
40、unhex(STRING a) --hex的逆方法
41、width_bucket(NUMBER expr, NUMBER min_value, NUMBER max_value, INT num_buckets)
Returns an integer between 0 and num_buckets+1 by mapping expr into the ith equally sized bucket. Buckets are made by piding [min_value, max_value] into equally sized regions. If expr < min_value, return 1, if expr > max_value return num_buckets+1. (as of Hive 3.0.0)
八、Misc--各种各样的类型
1、aes_decrypt(BINARY input, STRING|BINARY key)
--Decrypt input using AES (as of Hive 1.3.0). Key lengths of 128, 192 or 256 bits can be used. 192 and 256 bits keys can be used if Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files are installed. If either argument is NULL or the key length is not one of the permitted values, the return value is NULL. Example: aes_decrypt(unbase64('y6Ss+zCYObpCbgfWfyNWTw=='), '1234567890123456') = 'ABC'.
2、aes_encrypt(STRING|BINARY input, STRING|BINARY key)
--Encrypt input using AES (as of Hive 1.3.0). Key lengths of 128, 192 or 256 bits can be used. 192 and 256 bits keys can be used if Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files are installed. If either argument is NULL or the key length is not one of the permitted values, the return value is NULL. Example: base64(aes_encrypt('ABC', '1234567890123456')) = 'y6Ss+zCYObpCbgfWfyNWTw=='.
3、crc32(STRING|BINARY a)
--Computes a cyclic redundancy check value for string or binary argument and returns bigint value (as of Hive 1.3.0). Example: crc32('ABC') = 2743272264.
4、current_database() --返回当前的数据库名称
5、current_user() --返回当前的用户名称
6、get_json_object(STRING json, STRING jsonPath)
--从指定路径上的JSON字符串抽取出JSON对象,并返回这个对象的JSON格式,如果输入的JSON是非法的将返回NULL,注意此路径上JSON字符串只能由数字 字母 下划线组成且不能有大写字母和特殊字符,且key不能由数字开头,这是由于Hive对列名的限制
7、hash(a1[, a2...]) --返回参数的哈希值
8、java_method(class, method[, arg1[, arg2..]]) --所谓的匹配参数签名java方法,利用反射。
9、md5(STRING|BINARY a)
--为参数a计算一个MD5 128位的校验和。该值作为32个十六进制数字的字符串返回,如果参数为空,则返回null。
Calculates an MD5 128-bit checksum for the string or binary (as of Hive 1.3.0). The value is returned as a string of 32 hex digits, or NULL if the argument was NULL. Example: md5('ABC') = '902fbdd2b1df0c4f70b4a5d23525e932'.
10、reflect(class, method[, arg1[, arg2..]]) --匹配参数签名java方法,利用反射。
11、sha(STRING|BINARY a)
--Calculates the SHA-1 digest for string or binary and returns the value as a hex string (as of Hive 1.3.0). Example: sha1('ABC') = '3c01bdbb26f358bab27f267924aa2c9a03f'
12、sha1(STRING|BINARY a) --同上
13、sha2(STRING|BINARY a, INT b)
--Calculates the SHA-2 family of hash functions (SHA-224, SHA-256, SHA-384, and SHA-512) (as of Hive 1.3.0). The first argument is the string or binary to be hashed. The second argument indicates the desired bit length of the result, which must have a value of 224, 256, 384, 512, or 0 (which is equivalent to 256). SHA-224 is supported starting from Java 8. If either argument is NULL or the hash length is not one of the permitted values, the return value is NULL. Example: sha2('ABC', 256) = 'b5d4045c3f466fa91fe2cc6abe79232a1a'
14、version() --返回hive的使用版本,
--字符串包含2个字段,第一个是生成号,第二个是生成哈希。示例:“"select version();可能返回:2.1.0.2.5.0.0.1245 R027 59B9C5CE1A3D7D6B6D2E6DE23 78FB0C9322。实际结果将取决于您的构建。
15、array xpath(STRING xml, STRING xpath)
--The xpath family of UDFs are wrappers around the Java XPath library javax.xml.xpath provided by the JDK. The library is based on the XPath 1.0 specification.
16、xpath_boolean(STRING xml, STRING xpath)
--16-22都是这个意思
--UDF的XPath的家庭在java XPath库包装javax.xml.xpath通过JDK提供。该库是基于XPath 1规范的。
17、xpath_float(STRING xml, STRING xpath)
18、xpath_int(STRING xml, STRING xpath)
19、xpath_long(STRING xml, STRING xpath)
20、xpath_number(STRING xml, STRING xpath)
21、xpath_short(STRING xml, STRING xpath)
22、xpath_string(STRING xml, STRING xpath)
九、String--字符串
十、Data Masking--数据屏蔽
十一、Table Generating--表格生成
十二、Type Conversion--类型转化
1、binary(BINARY|STRING a) --将输入的值转化为二进制
2、cast(a as T) --格式转化,如果转化不成功会返回NULL值