hive sql常用函数
目录
1、regexp_replace(str, regexp, rep)
2、regexp_extract(str, regexp[, idx])
3、unix_timestamp(string date, string pattern)
八、UDAF 函数(用户自定义聚合函数,user defined aggregation function.多对一的输入输出)
九、UDTF(User-Defined Table-Generating Functions)表生成函数
一、数据类型
hive 的数据类型有原始数据类型和复杂类型,原始类型包括 TINYINT,SMALLINT,INT,BIGINT,BOOLEAN,FLOAT,DOUBLE,STRING,BINARY,TIMESTAMP,DECIMAL,CHAR,VARCHAR,DATE。复杂类型包括 ARRAY,MAP,STRUCT,UNION,这些复杂类型是由基础类型组成的。
二、基础运算
聚合函数 Hive 支持 count(),max(),min(),avg()等常用的聚合函数。 关系函数 =, !=, <>, < , >, <= , >, >= 空值判断:is null, is not null. 数学运算:支持所有的数值类型: + , - , * , /, % ,& , | , ^, ~等。 逻辑运算:逻辑与:and;逻辑或:or;逻辑非:not。
三、字符串函数
1、字符串长度函数: length()
length(string a): 返回字符串 a 的长度 。
2、字符串反转函数:reverse
reverse(string a) :返回字符串 a 的反转结果
3、字符串连接函数
(1)不带分隔符的字符串连接函数
concat() 语法:concat(string A, string B,........):返回输入字符串连接后的结果,支持任意个输入字符串 concat(string|binary A, string|binary B…) 将传入的字符串 A,B 合并为新的字符串,concat(‘foo’, ‘bar’)结果为’foobar’
(2)带分隔符字符串连接函数
concat_ws() concat_ws(String SEP, string a, string b):返回输入字符串连接后的结果,sep 表示各个字符串之间的分隔符。 concat_ws(string SEP, string A, string B…)或 concat_ws(string SEP, array) 与 concat 作用类似,但是支持自定义的分隔符 SEP
4、字符串截取函数
(1)substr(string a, int start, int len) 返回字符串 a 从 start 位置开始,长度为 len 的字符串。
(2)substring(string a, int start, int len) 返回字符串 a 从 start 位置开始,长度为 len 的字符串。
5、字符串分割函数:split
功能:split(string str, string pat)
用法:按照正则表达式 pat 拆分字符串 str。例如:split(‘a,b,c,d’,’,’)返回[“a”,“b”,“c”,“d”]
6、字符串查找函数
功能:instr(string str, string substr)
用法:返回 str 中第一个 substr 的位置。如果其中 str 为 null,则返回 null;如果在 str 中找不到 substr,则返回 0 。
7、ascii
用法:ascii(string str)。
功能:返回字符串的第一个字符的 ascii 数字。
8、base64
用法:base64(binary bin)。
功能:将二进制格式转成 base64 位的字符串,返回值是字符串。
9、character_length
用法:character_length(string str)。
功能:返回 str 中包含的 UTF-8 字符数,返回值为 int。
10、chr
用法:chr(bigint 或 double num)。
功能:返回指定数字对应的 ASCII 字符,如果指定的数字大于 256,将对该数字对 256 取模。
11、decode
用法:decode(binary bin, string charset)
功能:使用 charset 方式,将二进制 bin 解码为字符串。支持的字符集有:‘US-ASCII’, ‘ISO-8859-1’, ‘UTF-8’, ‘UTF-16BE’, ‘UTF-16LE’, ‘UTF-16’ 。
12、encode
用法:encode(str1,str2)
功能:将 str1 用 str2 设置的编码格式进行编码。
13、sentences
用法:sentences(string str, string lang, string locale)
功能:将 str 拆分成句子数组,其中每个句子都是一个单词数组。‘lang’和’locale’参数是可选的,如果省略,则使用默认语言环境。
14、ngrams
用法:ngrams(array> arr,int n,int k)。
功能:按 n 个单词出现频次,倒序取 top k。
15、context_ngrams
用法:context_ngrams(array, array, int K, int pf)
功能:从一组标记化的句子中返回前 k 个文本。例如 select context_ngrams(sentences(‘hello word!hello hive,hi hive,hello hive’),array(‘hello’,null),4) from A,会返回[{“ngram”:[“hive”],“estfrequency”:7141046.0},{“ngram”:[“word”],“estfrequency”:3570523.0}],即最经常在"hello"后出现的单词,并统计其频次,有统计聚合作用。
16、elt
用法:elt(N int,str1 string,str2 string,str3 string,…)
功能:返回给定字符串集中的第 N 个,若不存在则返回 null。例如 elt(2,‘hello’,‘world’) 返回’world’ 。
17、field
用法:field(val T,val1 T,val2 T,val3 T,…)
功能:返回 val 在 val1,val2…的位置。若不存在则返回 0。例如 field(‘world’,‘say’,‘hello’,‘world’),返回值为 3 。
18、soundex
用法:soundex(string A)
功能:返回字符串的 soundex 代码。例如:soundex(‘Miller’)返回 M460
19、find_in_set
用法:find_in_set(string str, string strList)
功能:返回 str 在 strList 中的位置。若不存在或 str 中存在",",则返回 0;若 str 为 null,则返回 null。
20、format_number
用法:format_number(number x, int d)
功能:将数字精确到 d 位小数,例如 format_number(5.123456, 4),返回值为 5.1234。
21、in_file
用法:in_file(string str, string filename)
功能:如果 str 以整行的方式出现在 filename 中,则返回 True。必须存在 filename 文件,否则会报错 。
22、locate
用法:locate(string substr, string str, int pos)
功能:返回 substr 在 str 的 pos 位置后,第一次出现的位置,pos 非必传。例如 locate(‘a’, ‘abcabc’),返回 1;locate(‘a’, ‘abcabc’,1),返回 1;locate(‘a’, ‘abcabc’,2),返回 4。
23、lpad
用法:lpad(string str, int len, string pad)
功能:将 str 截取长度 len 位,若 str 长度不足 len 则,左侧用 pad 补充。例如 lpad(‘abcdef’, 5, ‘a’)返回’abcde’;lpad(‘abc’, 5, ‘a’)返回’aaabc’。
24、rpad
用法:rpad(string str, int len, string pad)
功能:与 lpad 对应,将 str 截取长度 len 位,若 str 长度不足 len 则,右用 pad 补充。例如 rpad(‘abcdef’, 5, ‘a’)返回’abcde’;rpad(‘abc’, 5, ‘a’)返回’abcaa’。
25、ltrim
用法:ltrim(string A)
功能:删除字符串 A 左边的空格
26、trim
用法:trim(string A)
功能:返回出现在字符串 A 两端的空格。例如 trim(’ foo bar ‘),返回’foo bar’。
27、rtrim
用法:rtrim(string A)
功能:与 ltrim 对应,删除字符串 A 右边的空格。
28、octet_length
用法:octet_length(string str)
功能:返回以 UTF-8 编码保存字符串 str 所需的八位字节数。
29、parse_url
用法:parse_url(string urlString, string partToExtract [, string keyToExtract])
功能:解析 url,并返回需要抽取的部分,(可能抽取的部分 partToExtract 为 HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE)。 例如:parse_url(‘http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1’, ‘HOST’) 返回 ‘http://facebook.com’
30、printf
用法:printf(String format, Obj… args)
功能:按照指定的 format 进行输出。例如 printf(“Hello World %d %s”, 100, “days”),返回值为"Hello World 100 days”
31、repeat
用法:repeat(string str, int n)
功能:将字符串 str 重复 n 次。
32、replace
用法:replace(string A, string OLD, string NEW) 。
功能:将字符串 str 中的 OLD 子串替换为 NEW 。
33、reverse
用法:reverse(string A)
功能:对字符串 A 进行翻转
34、space
用法:space(int n)
功能:返回 n 个空格的字符串
35、split
用法:split(string str, string pat)
功能:按照正则表达式 pat 拆分字符串 str。例如:split(‘a,b,c,d’,’,’)返回[“a”,“b”,“c”,“d”]
36、str_to_map
用法:str_to_map(text, delimiter1, delimiter2)
功能:将 text 分割为数个键值对。其中 delimiter1 和 delimiter2 为可选参数。delimiter1(默认为’:’)代表键 k 与值 v 的分隔符。delimiter2(默认为’,’)代表键值对 k-v 之间的分隔符。例如 str_to_map({“column1:1,column2:2”)返回值为{“column1”:“1”,“column2”:“2”}
37、sustring_index
用法:substring_index(string A, string delim, int count)
功能:delim 为分隔符,返回 delim 将 A 分割后的前 count 部分。若 count 为负,则返回分割的最后一部分。例如:substring_index(‘http://www.apache.org’, ‘.’, 2) 返回 ‘www.apache’。
38、translate
用法:translate(string|char|varchar input, string|char|varchar from, string|char|varchar to)
功能:将 input 字符串中出现在 from 中的每个字符替换为 to 中的相应字符以后的字符串。 若 from 比 to 字符串长,那么在 from 中比 to 中多出的字符将会被删除。与 PostgreSQL 中对应函数等价。例如 translate(‘abcdefga’,‘abc’,‘wo’)返回’wodefgw’。
39、unbase64
用法:unbase64(string str)
功能:将 64 位的字符串转换二进制值
40、initcap
用法:initcap(string A)
功能:返回字符串,每个单词的第一个字母为大写,所有其他字母为小写。单词由空格分隔。
41、levenshtein
用法:levenshtein(string A, string B)
功能:返回两个字符串之间的 Levenshtein 距离。例如 levenshtein(‘kitten’, ‘sitting’)返回值为 3。 (Levenshtein 距离,又称编辑距离,指的是两个字符串之间,由一个转换成另一个所需的最少编辑操作次数。编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符)
四、数学函数
1、round()
用法:round(double a)。
功能:返回值 bigint,返回 double 类型的整数值部分(遵循四舍五入)。
用法:round(double a, int d)。 功能:返回值 double,返回指定指定精度 d 的 double 类型。
2、floor()
用法:floor(double a ),向下取整函数。
功能:返回等于或者小于该 double 变量的最小的整数。
3、ceil()
用法:ceil(double a),向上取整函数。
功能:返回等于或者大于该 double 变量的最小的整数。同 ceiling。
4、rand()
用法:取随机函数,rand(int seed)。
功能:返回一个 0 到 1 范围内的随机数。
5、exp()
用法:自然指数函数,exp(double a)。
功能:返回自然对数 e 的 a 次方。
6、pow()
用法:幂运算函数,pow(double a, double p)。同 power()。
功能:返回 a 的 p 次幂。
7、sqrt()
用法:开平方函数,sqrt(double a)。
功能:返回 a 的平方根。
8、abs()
用法:绝对值函数,abs(x)。
功能:返回 x 绝对值。
9、acos()
用法:反余弦值,acos(X),X 是数值型字符。
功能:如果-1<=X<=1,返回 X 的反余弦值。否则返回 NaN。
10、asin()
用法:反余弦值,asin(X),X 是数值型字符。
功能:如果-1<=X<=1,返回 X 的反正弦值。否则返回 NaN。
11、atan()
用法:反正切值,atan(X),X 是数值型字符。
功能:返回 X 的反正切值。
12、bin()
用法:bin(X),X 是整型。
功能:返回 X 的二进制表示。
13、ceiling()
用法:ceiling(X),X 是数值型字符。
功能:向上取整,返回大于或等于 X 最小整数。
14、conv()
用法:conv(X,from,to),X 是整型,from、to 也是整型。
功能:进制转换函数,将 X 从 from 进制转换成 to 进制。
15、cbrt()
用法:cbrt(DOUBLE a)。
功能:返回类型 DOUBLE,返回 a 的立方根。
16、degrees()
用法:degrees(double/decimal a)。
功能:将弧度 a 转化为角度。
17、radians()
用法:radians(double/decimal a)
功能:将角度 a 转化为弧度。
18、factorial()
用法:factorial(INT a)。
功能:返回类型是 BIGINT,返回 a 的阶乘(n!=1×2×3×...×(n-1)×n)?19、greatest()?语法:greatest(T v1, T v2, …)。 功能:返回 N 个数的最大值。
20、hex()
用法:hex(X),X 可以是整型,也可以是 string 型。
功能:返回 X 的十六进制表示。
21、least()
用法:least(T v1, T v2, …)。
功能:返回 N 个数的最小值。
22、ln()
用法: ln(double a)。
功能: double 说明: 返回 a 的自然对数。
23、bround()
用法:bround(double a)。
功能:银行家舍入法,四舍六入五成双。返回数字 a 高斯舍入后的值高斯舍入也称银行家舍入。简单的说就是四舍六入五考虑,五后非空就进一,五后为空看奇偶,五前为偶应舍去,五前为奇要进一。 银行家舍入法(1~4:舍,6~9:进,5->前位数是偶:舍,5->前位数是奇:进) bround(DOUBLE a)
24、log2()
用法:log2(X),X 是数值型字符。
功能:返回以 2 为底的 X 的对数。
25、log10()
用法:log10(X),X 是数值型字符。
功能:返回以 10 为底的 X 的对数。
26、log()
用法:log(X,Y),X、Y 是数值型字符。
功能:返回以 X 为底的 Y 的对数。
27、negative()
用法:negative(X),X 是数值型字符。
功能:返回 X 的相反数。
28、pi()
用法法: pi(),数学常数 π。
功能:返回值是 double 类型。
29、pmod()
用法:pmod(X,Y),X,Y 是数值型字符。
功能:返回 X 除以 Y 的余数。
30、positive()
用法:positive(X),X 是任意字符。
功能:返回 X 本身。
31、rand()
用法:rand(X),X 是整型。
功能:返回 0 到 1 之间的随机数。
32、round()
用法:round(X,Y),X 是数值型字符,Y 是整型。
功能:对 X 进行四舍五入,Y 是要保留的小数位数,Y 如果省略则表示对 X 进行四舍五入取整。
33、shiftleft()
用法:shiftleft(BIGINT a, INT b)。
功能:返回类型:INT or BIGINT,按位左移。
34、shiftright()
用法:shiftright(BIGINT a, INT b)。
功能:返回类型 INT or BIGINT,按位右移。
35、shiftrightunsigned()
用法:shiftrightunsigned(BIGINT a, INT b)。
功能:返回类型 DOUBLE,按位无符号右移。
36、sign()
用法:SIGN(number)。
功能:SIGN 函数用于返回数字的符号。当数字大于 0 时返回 1,等于 0 时返回 0,小于 0 时返回 -1。
37、sin()
用法:sin(X),X 是数值型字符。
功能:返回 X 的正弦值,X 是弧度制。
38、cos()
用法:cos(X),X 是数值型字符。
功能:返回 X 的余弦值,X 是弧度制。
39、tan()
用法:tan(X),X 是数值型字符。
功能:返回 X 的正切值,X 是弧度制。
40、unhex()
用法:unhex(X),X 是 string 型。
功能:X 代表十六进制的字串,返回此十六进制的二进制表示。
41、width_bucket()
用法:width_bucket(NUMERIC expr, NUMERIC min_value, NUMERIC max_value, INT num_buckets)。
功能:分桶值,按 min_value/max_value 创建 num_buckets+1 个相同大小的桶,返回当前值所在的桶编号。
五、条件判断函数
1、if 函数
if(boolean testCondition,T valueTrue, T valueFalseOrNull) 当条件 testCondition 为 True 时候,返回 valueTrue,否则返回 valueFalseOrNull
2、非空查找函数
coalesce?coalesce(T v1, T v2,.....),返回参数中第一个非空值,如果所有值都为 null,那么返回 Null。
3、条件判断函数
case when?case when 写法一: case sex when ‘1’ then ‘男’ when ‘2’ then ‘女’ else ‘其他’ end
case when 写法二: case when sex = ‘1’ then ‘男’ when sex = ‘2’ then ‘女’ else ‘其他’ end
4、nvl(a,b)
判空函数,若 a 为空,则返回 b,否则为 a
5、nullif(a,b)
若 a=b 时,返回 null,否则为 a
6、isnotnull
isnull 判断输入参数是否不为空,不为空返回 ture;反之,返回 false
7、isnull
isnull 判断输入参数是否为空,为空返回 ture;反之,返回 false
8、assert_true
assert_true(BOOLEAN condition) 如果 condition 不为 true,则抛出异常,否则返回 null。
六、正则表达式及解析函数
1、regexp_replace(str, regexp, rep)
将字符串 str 中符合正则表达式 regexp 的部分替换成字符串 rep.
样例:select regexp_replace(‘fooball’, ‘oo|al’ , ‘’) from table_Name; regexp_extract(string subject, string pattern, int index) 返回字符串 subject 与正则表达式 pattern 匹配后的 index 部分。
例如 regexp_extract(‘100-300’, ‘(d+)-(d+)’, 2) 的返回值为 300
2、regexp_extract(str, regexp[, idx])
将字符串 str 按照正则表达式 regexp 的规则拆分,返回 idx 指定位置的字符。
样例:select regexp_extract(‘foothebar’, ‘foo(.*?(bar)’, 1) from tableName; regexp_replace(string INITIAL_STRING, string PATTERN, string REPLACEMENT) 将字符串 subject 与正则表达式 pattern 匹配上部分用 REPLACEMENT 进行替换并返回。
例如 regexp_replace(‘100-200’, ‘(d+)’, ‘num’)返回值为‘num-num’
3、parse_url。
url 解析函数,返回 url 中指定的部分。
样例:parse_url(string urlString, string partToExtract [, string keyToExtract] )
4、get_json_object()。
json 解析,get_json_object(string json_string, string path) 样例:select get_json_object(‘{......}’, ‘$.owner’) from tableName;
5、rlike /regexp
(A)str rlike (B),能否用 B 去正则匹配 A 的内容。
6、like
(A)str like (B)pattern,能否用 B 去完全匹配 A 的内容。?7、regexp?功能语法同 rlike 一样,只是名字不同。
七、日期函数
1.unix_timestamp()。
用法:unix_timestamp();
返回值:bigint ,获得当前时区的 unix 时间戳
2、unix_timestamp(String date)
用法:unix_timestamp(String date)
功能:将格式为”yyyy-MM-dd HH:ss”的日期转换到 unix 时间戳,返回 bigint 如果转换失败,则返回 0.
3、unix_timestamp(string date, string pattern)
用法:unix_timestamp(string date, string pattern)
功能:转换 pattern 格式日期到 unix 时间戳。如果转化失败,则返回 0. 样例:select unix_timestamp(‘2021-03-08 14:21:11’,’yyyy-MM-dd HH:mm:ss’) from table
4、from_unixtime
用法:from_unixtime(bigint unixtime,string pattern)
功能:unix 时间戳转日期函数,返回值 string,把具体的秒转化为时间日期。
5、current_timestamp
用法:current_timestamp()
功能:获取当前的时间精确到毫秒,样例:select current_timestamp() -- 2011-09-02 10:11:09.234212000
6、to_date
用法:to_date(string timestamp)
功能:日期时间转日期函数,年月日时分秒只取其中的年月日部分。
7、日期转年/月/日/小时/分钟/秒/周函数
(1)日期转年函数 year()
用法:year(String date)
功能:返回值为 int,返回日期中的年。样例:select year(‘2021-03-21 10:11:02’) from table
(2)日期转月函数 month(STRING date)
用法:unix 时间戳转日期函数
功能:返回日期中的月
(3)日期转天函数 day(STRING date)
用法:返回日期中的天。
功能:返回类型 int。
(4)日期转小时函数:hour(STRING date)
用法:返回日期中小时函数。
功能:返回类型 int。
(5)日期转分钟函数 minute(STRING date)
用法:返回日期中的分钟。
功能:返回类型 int。
(6)日期转秒函数 second(STRING date)
用法:返回日期中的秒。
功能:返回类型 int。
(7)日期转周函数 weekofyear,weekofyear(string date)
用法:返回日期在当前的周数。
功能:返回值为 int。
8、datediff
用法:datediff(string enddate, string startdate)
功能:返回值 int,返回结束日期减去开始日期。
9、date_add
用法:date_add(string startdate, int days)
功能:返回值 string,日期增加函数,返回开始日期 startdate 增加 days 天的日期。
10、date_sub
用法:date_sub(string startdate, int days)
功能:返回值 string. 日期减少函数,返回开始日期 startdate 减少 days 天后的日期。
11、extract
用法:extract(date,integer)
功能:EXTRACT(year from '2015-01-15'),抽取日期类型中的年/月/日。
12、from_utc_timestamp
用法:from_utc_timestamp(timestamp, timezone)
功能:把 UTC 时间转换成 timezone 时间。
13、to_utc_timestamp
用法:to_utc_timestamp(timestamp, timezone)
功能:将 timestamp 转换成 UTC 时间。
14、current_date
用法:current_date()
功能:当前日期 。
15、add_months
用法:add_months(date,integer)
功能:返回 date 加上 integer 个月后的日期。
16、last_day
用法:last_day(date)。
功能:返回某个月的最后一天。
17、next_day
用法:next_day(start_date,day_of_week)。
功能:求当前日期的下一个周几。 next_day(current_date(),'mo')。
18、trunc
用法:trunc(date,fmt)
功能:date:日期时间类型 fmt:MONTH/MON/MM OR YEAR/YYYY/YY 截断指定格式,后补初始时间,如果为 YEAR 则返回 year(date)-01-01,如果为 MM 则返回 year(date)+month(date)-01
19、months_between
用法:months_between(‘date1’,‘date2’)。
功能:返回两个日期之间的月份差。
20、date_format
用法:date_format(date, format)
功能:date 参数是合法的日期,format 参数是规定日期输出的格式。
八、UDAF 函数(用户自定义聚合函数,user defined aggregation function.多对一的输入输出)
分析函数名(参数) OVER (PARTITION BY 子句 ORDER BY 子句 ROWS/RANGE 子句)。 即由以下三部分组成:
分析函数名:?如 sum、max、min、count、avg 等聚集函数以及 lead、lag 行比较函数等;
over:?关键字,表示前面的函数是分析函数,不是普通的集合函数;
分析子句:?over 关键字后面挂号内的内容; 分析子句又由下面三部分组成: partition by :分组子句,表示分析函数的计算范围,不同的组互不相干; ORDER BY: 排序子句,表示分组后,组内的排序方式; ROWS/RANGE:窗口子句,是在分组(PARTITION BY)后,组内的子分组(也称窗口),此时分析函数的计算范围窗口,而不是 PARTITON。窗口有两种,ROWS 和 RANGE;
1、dense_rank()
用法:dense_rank()。
功能:有并列,相同名次不空位,总数会变。122345
2、rank()
用法:rank()
功能:有并列,相同名次空位,总数不会变。12245
3、row_number()
用法:row_number()
功能:没有并列,相同名次按顺序排(同分不同名)
4、sum()
用法:sum(column) 。
功能:用于计算指定列的总和。
5、avg()
用法:avg(column)
功能:用于计算指定列的平均值。
6、max()
用法:max(column)。
功能:用于计算指定列的最大值。
7、min()
用法:min(column) 。
功能:用于计算指定列的最大值。
8、count()
用法:count(column)
功能:用于计算指定列的最大值。
9、ntile()
用法:NTILE(n)。
功能:用于将分组数据按照顺序切分成 n 片,返回当前切片值,如果切片不均匀,默认增加第一个切片的分布
10、lag()
用法:lag(exp_str,offset,defval) over(partion by ..order by …)
功能:可以在 Hive 中轻松地查找前一行或前 N 行的数据,如果没有行,则返回 null。
11、lead()
用法:lead(exp_str,offset,defval) over(partion by ..order by …)
功能:可以在 Hive 中轻松地查找后一行或后 N 行的数据,如果没有行,则返回 null。
12、first_value()
用法:first_value() over(partion by ..order by …)
功能:取分组内排序后,截止到当前行,第一个值。
13、last_value
用法:last_value() over(partion by ..order by …)
功能:取分组内排序后,截止到当前行,最后一个值。
14、variance
用法:variance(col)
功能:返回组内查询列的方差(也可称为总体方差),也可写成 var_pop(col)。
15、var_samp
用法:var_samp(col)
功能:返回组内查询列方差的无偏估计(方差无偏估计中,因为估计期望损失了一个自由度,估计的分母为 n-1,也可称为样本方差)。
16、stddev_pop
用法:stddev_pop(col)
功能:返回组内查询列的标准差
17、stddev_samp
用法:stddev_samp(col)
功能:返回组内查询列标准差的无偏估计方差(无偏估计中,因为估计期望损失了一个自由度,估计的分母为 n-1)
18、covar_pop
用法:covar_pop(col1, col2)
功能:返回组内查询列 col1 和 col2 的总体协方差。
19、covar_samp
用法:covar_samp(col1, col2)
功能:返回组内查询列 col1 和 col2 的样本协方差
20、corr
用法:corr(col1, col2)
功能:返回组内查询列 col1 和 col2 的相关系数 。
21、perccentile
用法:percentile(BIGINT col, p)
功能:返回组内查询整数列 col 所在的分位数,p 可以为浮点数或数组,且其中元素大小必须在 0-1 之间。若 col 不是整数,需使用 percentile_approx 。
22、percentile_approx
用法:percentile_approx(DOUBLE col, array(p1[, p2]…) [, B])
功能:返回组内查询列 col 所在的分位数,p 可以为浮点数或数组,且其中元素大小必须在 0-1 之间。B 为可选参数,为精度控制参数
23、regr_avgx
用法:regr_avgx(independent, dependent)
功能:计算自变量的平均值。该函数将任意一对数字类型作为参数,并返回一个 double。任何具有 null 的对都将被忽略。如果应用于空集:返回 null。否则,它计算以下内容:avg(dependent)
24、regr_avgy
用法:regr_avgy(independent, dependent) 。
功能:计算因变量的平均值。该函数将任意一对数字类型作为参数,并返回一个 double。任何具有 null 的对都将被忽略。如果应用于空集:返回 null。否则,它计算以下内容:avg(independent)。
25、regr_count
用法:regr_count(independent, dependent)
功能:返回 independent 和 dependent 都非空的对数 。
26、regr_intercept
用法:regr_intercept(independent, dependent)
功能:返回线性回归的截距项 。
27、regr_r2
用法:regr_r2(independent, dependent)
功能:返回线性回归的判决系数(R 方,coefficient of determination)
28、regr_slope
用法:regr_slope(independent, dependent)
功能:返回线性回归的斜率系数 。
29、regr_sxy
用法:regr_sxy( [ALL | DISTINCT] yExpr, xExpr) [FILTER ( WHERE cond ) ]
参数说明:yExpr:一个数值表达式,因变量。
xExpr:一个数值表达式,自变量。
cond:一个可选的布尔表达式,可筛选用于函数的行。
功能:返回根据 xExpr 和 yExpr 不为 NULL 的组的值计算出的 yExpr 和 xExpr 乘积的和。
30、regr_syy
用法:regr_syy( [ALL | DISTINCT] yExpr, xExpr) [FILTER ( WHERE cond ) ]
参数说明:yExpr:一个数值表达式,因变量。
xExpr:一个数值表达式,自变量。
cond:一个可选的布尔表达式,可筛选用于函数的行。
功能:返回 xExpr 和 yExpr 不为 NULL 的组中 yExpr 值的平方和。
31、regr_sxx
用法:regr_sxx( [ALL | DISTINCT] yExpr, xExpr) [FILTER ( WHERE cond ) ]
参数说明:yExpr:一个数值表达式,因变量。
xExpr:一个数值表达式,自变量。
cond:一个可选的布尔表达式,可筛选用于函数的行。
功能:返回 xExpr 和 yExpr 不为 NULL 的组中 xExpr 值的平方和。
32、histogram_numeric
用法:histogram_numeric(col, b)
功能:用于画直方图。返回一个长度为 b 的数组,数组中元素为(x,y)形式的键值对,x 代表了直方图中该柱形的中心,y 代表可其高度。
33、collect_set
用法:collect_set(col)
功能:返回查询列 col 去重后的集合,与 distinct 不同,distinct 查询结果为一列数据,collect_set 查询后结果为一个集合形式的元素
34、collect_list
用法:collect_list(col)
功能:返回查询列 col 的列表
九、UDTF(User-Defined Table-Generating Functions)表生成函数
1、explode()
用法:explode(col)。
功能:explode()函数可以将数组(array 类型)的元素分隔成多行,或将映射(map 类型)的元素分隔为多行和多列。
2、posexploed()
用法:posexplode(col)。
功能:posexplode 只能用于 array。
3、inline()
用法:inline(ARRAY)
功能:inline 一般结合 lateral view 使用
4、stack()
用法:stack(int r,T1 V1,...,Tn/r Vn)
功能:即分解 n 个值 V1…Vn 转化成 r 行。每一行将有 n/r 列(向上取整)。
5、json_tuple()
用法:json_tuple(string jsonStr, string key1, string key2, …)
功能:返回 key1,key2 键对应的值。
6、parse_url()
用法:parse_url(URL,parts[HOST/PATH/QUERY])
功能:parse_url 函数是 Hive 中提供的最基本的 url 解析函数,可以根据指定的参数,从 url 解析出对应的参数值进行返回,函数为普通的一对一函数类型。
十、集合类函数
1、grouping sets
用法:group by k1,k2,k3 grouping sets((组合 1),(组合 2),(组合 3)) 对于 grouping sets 后的组合,应该是 group by 后的子集,没有使用到的 group by 字段,会自动使用 null 值填充 功能:根据不同的维度组合进行聚合,等价于将不同维度的 GROUP BY 结果集进行 UNION ALL 对于多个维度聚合问题,grouping sets 不用像 cube 方式将分组字段排列组合列出全部维度的结果,能够实现更灵活的组合。
2、grouping_id
用法:grouping sets 中的每一种粒度,都对应唯一的 groupingid 值,其计算公式与 group by 的顺序、当前粒度的字段有关。
功能:它是根据 group by 后面声明的顺序字段是否存在于当前 group by 中的一个二进制位组合数据,若组合中出现即为 1,反正则为 0,group by 后字段先出现的放在最低位,依次排开:比如 group by class,sex,course,则二进制的顺序为:course sex class ,grouping sets 字段出现则为 1,反之则为 0, 比如(class, course), 二进制为 101,十进制则为 5,则 groupingid 为 5,同理 grouping__id 为 6,则组合为(sex,course),二进制为 110。
3、cube
用法:为指定表达式集的每个可能组合创建分组集。首先会对(A、B、C)进行 group by,然后依次是(A、B),(A、C),(A),(B、C),(B),(C),最后对全表进行 group by 操作。
功能:cube 简称数据魔方,可以实现 hive 多个任意维度的查询,cube(a,b,c)则首先会对(a,b,c)进行 group by,然后依次是(a,b),(a,c),(a),(b,c),(b),(c),最后在对全表进行 group by,cube 会统计所选列中值的所有组合的聚合。
4、rollup
用法:rollup 的含义是卷曲的意思,顾名思义,就是会从右向左的组合字段,得到聚合结果。 group by A,B,C with rollup 首先会对(A、B、C)进行 group by,然后对(A、B)进行 group by,然后是(A)进行 group by,最后对全表进行 group by 操作。可以看出 group by A,B,C with rollup;是上述几种 group by 的并集。 功能: rollup 可以实现从右到做递减多级的统计,显示统计某一层次结构的聚合。
5、size
用法:size(Map/ARRAY)
功能:返回数组类型中的元素数。
6、map_keys
用法:map_values(Map)
功能:返回一个无序数组,该数组包含输入映射的键。
7、map_values
用法:返回一个无序数组,该数组包含输入映射的值。
功能:map_values(Map)。
8、array_contains
用法:array_contains(Array, value)。
功能:如果数组包含值,则返回 TRUE。
9、sort_array
用法:sort_array(array, [asc|desc])
功能:它可以根据指定的排序规则对数组进行排序,并返回一个排好序的新数组。
十一、类型转换函数
1、cast()
用法:cast (字段名 as 转换的类型)
功能:基础类型之间强制转换。
2、binary()
用法:binary(string|binary)。
功能:binary,将 string 类型转换为二进制。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!