其他分享
首页 > 其他分享> > hive functions 大全

hive functions 大全

作者:互联网

show functions 查看了所有的方法
把所有的方法记录下来,下次免得去翻别人的博客了

数学函数

数学常规函数
函数简介用法
abs 绝对值 select abs(-13);13
negative 正数转负数,负数转正数 select negative(-4);4 select negative(4);-4
sin 正弦值 参数无限制数字即可 select sin(0.52); 0.49688
cos 余弦值 参数无限制数字即可 select cos(13); 0.907446
tan 正切值 参数无限制数字即可 select tan(0.523); 0.576552
asin 反正弦值 参数a介于-1到1之间,否则返回NULL值 select asin(0.25);0.2526
acos 反余弦值 参数a介于-1到1之间,否则返回NULL值 select acos(0.25);1.3181
atan 反正切值 参数无限制数字即可 select atan(-10.34);-1.47438
degrees 弧度值转换为度数值 select degrees(0.1);5.729577951308232
radians 度数值转换为弧度值 select radians(30);0.5235987755982988
div 整数除法器 将a除以b结果为整数 SELECT 9 div 2;4
mod 余数 select mod(7,5) ;2
pmod a除以b的余数的绝对值 select pmod(-9,4);3 select pmod(9,4);1
ceil 向上取整 select ceil(10.1);11
ceiling 向上取整 select ceil(10.1);11
round 四舍五入 select round(1.5);2 select round(3.1415926,4);3.1416
floor 小于或等于该数值参数的最大整数 select floor(9.5);9
bround 银行家算法 第二个参数可以限制小数位 select bround(2.5);2,bround(3.5);4
cbrt 立方根函数 select cbrt(27);3
ln 以e为底log对数 select ln(22026.465794806718);10
log 返回以第一个参数为低的第二个参数对数 select log(2,8);3
log10 以10为底log对数 select log10(100);2
log2 以2为底log对数 select log2(8);3
sqrt 开方根函数 SELECT sqrt(16);4
pow 次方函数 select pow(2,4);16.0
power 次方函数 select power(2,4);16.0
e e常量 select e();2.718281828459045
exp e的N次方 select exp(2);7.38905609893065
pi 派常量 select pi();3.141592653589793
factorial 阶乘函数 select factorial(5);54321=120
format_number 数字格式化成"#,###.##" 保留第二参数小数位 select format_number(123345.65545,2);123,345.66
rand 产生随机数 有第二个参数每次相同 select rand();0.742319 select rand(100);0.7220096548596434
positive 返回当前值 select positive(-1);-1 select positive(1);1
shiftleft 二进制左移函数 select shiftleft(5,2);20
shiftright 二进制右移函数 select shiftright(20,2);5
shiftrightunsigned 无符号二进制右移函数 select shiftrightunsigned(-20,2);1073741819
sign 数值符号类型,如果参数大于0,返回1.0;小于0,返回-1.0;等于0,返回0.0 select sign(100.0);1 select sign(0);0 select sign(-100.0);-1
统计学相关函数
函数简介用法
std 一组数字的标准偏差 select std(id) from data;94365.2855709603
stddev 一组数字的标准偏差 select stddev(id) from data;94365.2855709603
stddev_pop 一组数字的标准偏差 select stddev_pop(id) from data;94365.2855709603
stddev_samp 返回一组数字的样本标准差 select stddev_samp(id) from data;115573.39954043635
var_pop 返回一组数字的方差 select var_pop(id) from data;8.904807120888887E9
variance 返回一组数字的方差 select var_pop(id) from data;8.904807120888887E9
var_samp 返回一组数字的样本方差 select var_samp(id) from data;1.3357210681333332E10
covar_pop 总体协方差 select covar_pop(a,b) from big_data;8.333333333324998E10
covar_samp 样本协方差 select covar_samp(a,b) from big_data;8.333334090900824E10
corr 皮尔逊相关系数 select corr(a,b) from big_data;1.0
regr相关函数
函数简介用法
regr_avgx 计算第二个参数的平均值,参数值为x,y select regr_avgx(id,user_id) from test;= avg(user_id)
regr_avgy 计算第一个参数的平均值,参数值为x,y select regr_avgy(id,user_id) from test;= avg(id)
regr_count 返回两列非空数量 select regr_count(id,user_id) from test;
regr_intercept 返回回归线的y轴截距 (SUM(y)* SUM(x * x)-SUM(X)* SUM(x * y))/(N * SUM(x * x)-SUM(x)* SUM(X) ) select regr_intercept(id,user_id) from test;-4.5
regr_r2 返回回归线的确定系数POWER(N * SUM(x * y)-SUM(x)* SUM(y),2)/((N * SUM(x * x)-SUM(x)* SUM(x ))*(N * SUM(y * y)-SUM(y)* SUM(y))) select regr_r2(id,user_id) from test;1
regr_slope 返回线性回归线的斜率 (N * SUM(x * y)-SUM(x)* SUM(y))/(N * SUM(x * x)-SUM(x)* SUM(x)) select regr_slope(id,user_id) from test;1.5
regr_sxx 辅助分析函数 SUM(x * x)-SUM(x)* SUM(x)/ N select regr_sxx(id,user_id) from test;2.0
regr_sxy 回归模型的统计有效性 SUM(x * y)-SUM(x)* SUM(y)/ N select regr_sxy(id,user_id) from test;3.0
regr_syy 辅助分析函数SUM(y * y)-SUM(y)* SUM(y)/ N select regr_syy(id,user_id) from test;4.5

字符串函数

字符串常规函数
函数简介用法
aes_decrypt 解密(input binary, key string/binary) select aes_decrypt(unbase64('ThkIuvL03UnaQXTfWjSZNg=='),'123456789012345a');abcd
aes_encrypt 加密(input string/binary, key string/binary)返回值二进制需要base64 第二个字符串长度16/24/32别的不会显示 select base64(aes_encrypt('abcd','123456789012345a'));
length 字符串长度 select length('abcdefgh');8
uuid 唯一标识符字符串 select uuid();e8b6113b-6c2e-49da-b9f8-1ec01c0edf29
repeat 重复函数 select repeat('1234',4);1234123412341234
reverse 倒置函数 select reverse('abcd');dcba
space 返回X个空格 select concat('a',space(4),'a');a a
printf 打印函数 必须字符串 select printf('abfhg');
字符串大小写函数
函数简介用法
initcap 字符串首字母大写 select initcap('abcdefg');Abcdefg
lower 字符串转小写 select lower('ABCD');abcd
lcase 字符串转小写 select lcase('ABCD');abcd
ucase 字符串大写 elect ucase('aBCD');ABCD
upper 字符串转大写 select upper('abcd');ABCD
字符串查找、拼接、替换函数
函数简介用法
coalesce 第一个不为空的值 select coalesce(NULL,null,1,'1');1
levenshtein 字符串差异个数 仅限字符串 select levenshtein('abcdABcd', 'ABCDADcd');5
field 返回第一个字符串在后续字符串的下标 select field('2022',id,user_id,desc) from data;2
locate 第一次出现的位置 select locate('abcd','abcdabcdabcd',2);5
elt 返回第n个字符串 参数仅限字符串 select elt(3,'a','b','c','d','e','f');c
lpad 指定长度字符串,不足指定的长度的字符串,则用指定字符从左边补全 select lpad('abcd',10,1);111111abcd
rpad 指定长度字符串,不足指定的长度的字符串,则用指定字符从右边补全 select rpad('abcd',10,1);abcd111111
concat 字符串拼接 select concat('ab','cd','ef');abcdef
substr 字符串截取 select substr('abcdef',1,3);abc select substr('abcdef',3);cdef
substring 字符串截取 select substring('abcdef',1,3);abc select substring('abcdef',3);cdef
substring_index 第二个分隔符出现之前的字符串 select substring_index('ab.cd.ef.gh','.',2);ab.cd
replace 字符串替换 select replace('abcdm','a','m');mbcdm
translate 字符串替换 abc替换成xyz select translate('abcdefgh','abc','xyz');
soundex 字符串转换成 soundex字符串 select soundex('abcd');A123
instr 子字符串在字符串中位置 select instr('abcdefg','cd');3
rtrim 去掉字符串右侧空格 select rtrim(' abcd ');abcd
ltrim 去掉字符串左侧空格 select ltrim(' abcd');abcd
trim 去掉字符串左右侧空格 select ltrim(' abcd ');abcd
字符正则相关函数
函数简介用法
regexp 正则like select 'abcdefgh' regexp '^ab';true
regexp_extract 将字符串按照正则表达式的规则拆分,返回指定的字符 select regexp_extract('abcd1efgh2ijk', '([a-z]*)', 1);abcd1
regexp_replace 正则替换 select regexp_replace('abcd1234', '\d+', 'a');abcda
rlike 正则like select 'abcdefgh' rlike '^ab';true "." 任意单个字符 "*" 匹配前面的字符0次或多次 "+" 匹配前面的字符1次或多次 "?" 匹配前面的字符0次或1次 "\d" 等于 [0-9] "\u4E00-\u9FA5" 汉字
字符串编码、进制相关函数
函数简介用法
ascii 字符串转ascii码 select ascii('4');52
md5 md5加密 select md5('abc');900150983cd24fb0d6963f7d28e17f72
sha SHA-1摘要 作为十六进制字符串返回 SELECT sha('ABC');3c01bdbb26f358bab27f267924aa2c9a03fcfdb8
sha1 SHA-1摘要 作为十六进制字符串返回 字符串和二进制 SELECT sha1('ABC');SELECT sha1(binary('3'));
sha2 SHA-2摘要 作为十六进制字符串返回 select sha2('abcd',224/256/384/512);
encode 第二个参数字符集对第一个参数进行编码 select encode('aa','UTF-8');aa
decode 第二个参数解码第一个参数 select decode(encode('aa','UTF-8'),'utf-8');aa
chr 将字节码数字转为对应字母 select chr('108');l select chr('106');j
character_length 返回字符串或者二进制的长度 SELECT char_length(bin(1024));SELECT char_length('1234');
char_length 返回字符串或者二进制的长度 SELECT char_length(bin(1024));SELECT char_length('1234');
octet_length str或二进制数据中的字节数 SELECT octet_length('HUX8 ');5 SELECT octet_length('abcde');5
crc32 返回字符串或二进制参数的循环冗余校验值 select crc32('abc');891568578
conv 进制转换 SELECT conv('100', 10, 2);1100100
base64 将给定的二进制转换为字符串 select base64(unbase64('abcd'));abcd
unbase64 64位的字符串转换二进制 select base64(unbase64('abcd'));abcd
bin 将整数转换为二进制,参数限制整数 select bin(3);
binary 将字符串转换为二进制,参数限制字符串 select binary('3');
hex 字符串转十六进制 select hex(1234);4D2 select hex('abcd');61626364
unhex 解析十六进制 select unhex('61626364');abcd
hash 返回参数的哈希值 select hash('abcd');2987074

日期函数

日期获取函数
函数简介用法
datetime_legacy_hybrid_calendar 日历有一个起始时间,这个之前时间是错误的 用这个函数修正 不重要 select datetime_legacy_hybrid_calendar(CAST('0601-03-07' AS DATE));0601-03-04
to_epoch_milli 暂时不知道这个函数用法 纪元的毫秒数 create table tstz1_n1(t timestamp with local time zone);insert into tstz1_n1 values(current_timestamp());select to_epoch_milli(t) from tstz1_n1;1660403689952
trunc 第二个参数最开始时间 select trunc(current_date(),'MM');'MM','QUARTER','YYYY'
second 返回时间的秒 参数date/timestamp select second(date('2018-09-19'));select second(current_timestamp());
minute 返回时间的分钟 参数date/timestamp select minute(date('2018-09-19'));select minute(current_timestamp());
hour 返回时间的小时参数date/timestamp select hour(date('2018-09-19'));0 select hour(current_timestamp());
current_date 当前日期 select current_date();2022-08-13
current_timestamp 当前时间戳 select current_timestamp();2022-08-13 12:15:17.435
day 当前日期的天 参数date/timestamp select day(date('2018-09-19'));19 select day(current_timestamp());14
dayofmonth 月里面天数 参数date/timestamp select dayofmonth(date('2018-09-19'));19 select dayofmonth(current_timestamp());14
dayofweek 周天数 参数date/timestamp select dayofweek(date('2022-09-19'));2 select dayofweek(current_timestamp());1
weekofyear 周数 参数date/timestamp select weekofyear(date('2022-08-13'));select weekofyear(current_timestamp());
month 返回时间的月份参数date/timestamp select month(date('2018-09-19'));select month(current_timestamp());
quarter 返回时间的季度参数date/timestamp select quarter(date('2018-09-19'));select quarter(current_timestamp());
year 返回时间的年份 参数date/timestamp select year(date('2018-09-19'));select year(current_timestamp());
日期转换函数
函数简介用法
to_date 返回时间戳中的日期部分 select to_date(current_timestamp());
to_unix_timestamp 转化成时间戳 select to_unix_timestamp('1970-01-01 00:00:00','PST');0
to_utc_timestamp 转化成UTC下的时间戳 select to_utc_timestamp('1970-01-01 00:00:00','PST');1970-01-01 08:00:00
date_format 前面格式转换成后面的格式 1:date/timestamp/string select date_format('2009-07-30','yyyyMMdd');select date_format(current_timestamp(),'yyyy
from_unixtime UNIX时间戳转日期 select from_unixtime(86400,'yyyy-MM-dd HH:mm:ss');1970-01-02 00:00:00
unix_timestamp 日期转UNIX时间戳 select unix_timestamp('2022-01-01 00:00:00');1640995200
datediff 日期差 'yyyy-MM-dd HH:mm:ss' or 'yyyy-MM-dd' 第一个减去第二个 SELECT datediff('2009-07-30', '2009-07-25');5 SELECT datediff('2009-07-30 12:12:12', '2009-07-25 12:12:12');5
last_day 月份最后一天的日期函数 select last_day(current_date());2022-08-31
next_day 当前日期的下一个周几是哪天 SELECT next_day('2022-08-13','TU');下一个周二是哪天 2022-08-16
date_add 日期相加 SELECT date_add('2009-07-30', 1);2009-07-31 不是这个格式的NULL
date_sub 日期相减 SELECT date_sub('2009-07-30', 1);
add_months 月份相加 输入必须yyyy-MM-dd 输出可以第三个参数指定 select add_months('2022-08-01',2,'yyyyMMdd');20221001
months_between 相差的月份 select months_between(current_date(),'2022-5-13'),months_between('2022-09-13','2022-5-13') ;3 4
日期获取 floor函数
函数简介用法
floor_day 返回时间戳的天开始时间 select floor_day(current_timestamp());2022-08-13 00:00:00 (真实时间 2022-08-13 14:45:30)
floor_hour 返回时间戳的小时开始时间 select floor_hour(current_timestamp());2022-08-13 14:00:00 (真实时间 2022-08-13 14:45:30)
floor_minute 返回时间戳的分钟开始时间 select floor_minute(current_timestamp());2022-08-13 14:45:00 (真实时间 2022-08-13 14:45:30)
floor_month 返回时间戳的月份开始时间 select floor_month(current_timestamp());2022-08-01 00:00:00 (真实时间 2022-08-13 14:45:30)
floor_quarter 返回时间戳的季度开始时间 select floor_quarter(current_timestamp());2022-07-01 00:00:00 (真实时间 2022-08-13 14:45:30)
floor_second 返回时间戳的秒开始时间 select floor_second(current_timestamp());2022-08-13 14:45:30 (真实时间 2022-08-13 14:45:30)
floor_week 返回时间戳的周开始时间 select floor_week(current_timestamp());2022-08-08 00:00:00 (真实时间 2022-08-13 14:45:30)
floor_year 返回时间戳的年开始时间 select floor_year(current_timestamp());2022-01-01 00:00:00 (真实时间 2022-08-13 14:45:30)

集合函数

函数简介用法
size 集合长度函数 select size(map(1,2,3,4));2 select size(array(1,2,3,4));4
array 输入参数转数组 会把所有值转换为字符串 select array(1,2,'3','4');["1","2","3","4"]
split 字符串切数组 select split('a,b,c,d',',');["a","b","c","d"]
index 返回第一个参数的 第二个参数的值 select index(array(1,2,3,4),2);
array_contains 数组包含 第二个参数必须是字符串 select array_contains(array('a',2,'3','4'),'2');
sort_array 集合排序 select sort_array(array(4,2,3,4));[2,3,4,4]
sort_array_by 集合排序  
replicate_rows 一行变成多行 select replicate_rows(cast (5 as BIGINT),'abcd');
explode 爆炸函数 select desc,dessplit from data lateral view explode(split(desc,','))t as dessplit;a,b,c,d,e,f {a,b,c,d,e,f}
posexplode 带下标的爆炸函数 select desc,dessplit,dessplit_index from data lateral view posexplode(split(desc,','))t as dessplit,dessplit_index;
collect_list 将列转换数组 可以重复 select collect_list(id) from data;
collect_set 将列转换数组 不可以重复 select collect_set(id) from data;
concat_ws 将数组内容按照分隔符拼接成字符串 select concat_ws('*',collect_list(user_id)) from data;
find_in_set 返回str_array中str的第一个匹配项,其中str_array是逗号分隔的字符串 SELECT find_in_set('abcd','a,ab,abc,abcd,abcde');4
inline 将数据和结构分解为表 select inline(array(struct('a','1','b',2),struct('c','3','d',4)));col1 col2 col3 col4 a 1 b 2 c 3 d 4
str_to_map 字符串转map select str_to_map('a:1,b:2,c:3,d:4',',',':');{"a":"1","b":"2","c":"3","d":"4"}
map 构造map函数都转成字符串 select map(1,2,'a','b');{"1":"2","a":"b"}
map_keys 返回map的key select map_keys(map(1,2,'a','b'));["1","a"]
map_values 返回map的value select map_values(map(1,2,'a','b'));["2","b"]
struct 构造结构体函数 select struct(1,'abcd',2.0,false);{"col1":1,"col2":"abcd","col3":2,"col4":false}
named_struct 结构体构造 select named_struct('a',1,'b',2);{"a":1,"b":2}

分组函数

函数简介用法
min 最小值 select min(id) over(partition by id) from data;
max 最大值 select max(id) over(partition by id) from data;
least 列表最小的值 select least(id,user_id) from data;
greatest 两列最大的值 select greatest(id,user_id) from data;
sum 聚合函数 select name, score, sum(score)over(order by name ) from window_test;
row_number 组函数 不用介绍了  
grouping groupby 升级用法 SELECT id,user_id,count(1) FROM data GROUP BY id,user_id GROUPING SETS (id,user_id,(id,user_id));
first_value 第一个值 依赖over函数 select name, score, first_value(score)over(partition by name order by score) from window_test;
last_value 最后一个值 依赖over函数 select name, score, last_value(score)over(partition by name order by score) from window_test;
lag 上两行score字段 select name, score, lag(score,2)over(partition by name order by score) from window_test;
lead 下两行score字段 select name, score, lead(score,2)over(partition by name order by score) from window_test;
rank 排名函数1234 ,相同顺序 下一个加二 依赖over函数 select name, score, dense_rank()over(partition by name order by score) from window_test;
dense_rank 排名函数,相同顺序 下一个加一 依赖over函数 select name, score, dense_rank()over(partition by name order by score) from window_test;
cume_dist 排名/总排名函数 select name, score, cume_dist()over(partition by name order by score) from window_test;
percent_rank 百分比分组函数 select name, score, percent_rank()over(partition by name order by score) from window_test;
percentile 百分位数函数 select percentile(id,0.5) from data; 2023.0
percentile_approx 多个百分位数函数 select percentile_approx(id,array(0.25,0.5,0.75,1)) from data;[2022.0,2023.0,102112.0,202201.0]
ntile 分块函数,数据氛围多块 参数为int select name, score, ntile(3)over(order by score) from window_test;
field 返回第一个字符串在后续字符串的下标

select field('2022',id,user_id,desc) from data;2

文件解析函数

函数简介用法
in_file 文件数据与字符串str匹配 整行匹配 select in_file('202201,2022,2021','/opt/hive/hive/data/data/000000_0');

URL解析函数

函数简介用法
parse_url 从URL中提取部件:HOST,PATH,QUERY,REF,PROTOCOL,AUTHORITY,FILE,USERINFO 键指定要提取的查询 SELECT parse_url('http://facebook.com/path/p1.php?query=1','USERINFO');NULL
parse_url_tuple 从URL中提取部件 SELECT parse_url_tuple('http://facebook.com/path/p1.php?query=1','HOST','PATH','QUERY','REF','PROTOCOL','AUTHORITY','FILE','USERINFO');

JSON解析函数

函数简介用法
get_json_object 解析字符串 select get_json_object('{"a": 1, "b": [1, 2, 3]}','$.b');[1,2,3]
json_tuple 解析字符串 select json_tuple('{"a": 1, "b": [1, 2, 3]}','a','b');1 [1,2,3]

XML解析函数

函数简介用法
xpath 按照第二个参数解析第一个xml SELECT xpath('b1b2b3c1c2','a/b/text()');["b1","b2","b3"]
xpath_boolean xml解析 布尔类型判断 SELECT xpath_boolean('false','a/b/text()="false"');true
xpath_double xml解析 类型提取 SELECT xpath_double('3.1415','a/b/text()');3.1415
xpath_float xml解析 类型提取 SELECT xpath_float('3.1415','a/b/text()');3.1415
xpath_int xml解析 类型提取 SELECT xpath_int('3.1415','a/b/text()');3
xpath_long xml解析 类型提取 SELECT xpath_long('3.1415','a/b/text()');3
xpath_number xml解析 类型提取 SELECT xpath_number('3.1415','a/b/text()');3.1415
xpath_short xml解析 类型提取 SELECT xpath_short('3.1415','a/b/text()');3
xpath_string xml解析 类型提取 SELECT xpath_string('3.1415','a/b/text()');3.1415

java反射函数

函数简介用法
java_method 使用反射调用方法 select java_method("java.lang.Math", "max", 2, 3);
reflect 使用反射调用方法 select reflect('java.lang.Math','abs',-18);18
reflect2 Hive类型对应类的方法 select reflect2(-18,'toString');18 这个是Integer

系统函数

函数简介用法
compute_stats 返回一列的元数据信息 select compute_stats(id,'hll') from data;{"columntype":"Long","min":2022,"max":2022,"countnulls":0,"numdistinctvalues":1,"ndvbitvector":HLL����}
current_authorizer 当前认证规则 select current_authorizer();org.apache.hadoop.hive.ql.udf.generic.GenericUDFCurrentAuthorizer
current_database 当前数据库 select current_database();default
current_groups 当前用户组 select current_groups();root
current_user 当前用户 select current_user();root 暂时不理解这个用户和current_authorizer的关系
logged_in_user 返回登录的用户名 select logged_in_user();NULL
version hive版本 select version();3.1.3 r4df4d75bf1e16fe0af75aad0b4179c34c07fc975

类型转换函数

函数简介用法
cast 类型转换函数 select cast('20220101' as int);20220101
udftoboolean 参数转布尔类型默认为true select udftoboolean('true');true select udftoboolean('false');false select udftoboolean('1234');true
udftobyte 参数转字节类型默认为NULL select udftobyte(true);1 select udftobyte('false');-128 ~ 127
udftodouble 参数转双精度类型默认为NULL select udftodouble('3');3.0 select udftodouble('sad');NULL
udftofloat 参数转浮点类型默认为NULL select udftofloat('true');NULL select udftofloat('3');3.0
udftointeger 参数转整数类型 select udftointeger('true');NULL select udftointeger('1234');1234 -2147483648 ~ 2147483647
udftolong 参数转长类型 select udftolong('true');NULL select udftolong('1234');1234 -9223372036854775808 ~ 9223372036854775807
udftoshort 参数转整数类型 select udftoshort('true');NULL select udftoshort('1234');1234 -32768~32767
udftostring 参数转字符串类型 select udftostring('false');false select udftostring('true');true select udftostring(1234);1234

判断函数

函数简介用法
if 条件函数 不用介绍了 select if(11>10,true,false) ;
nullif 两个参数相等 NULL 否则第一个参数 select nullif(12,10);12
nvl 第一个参数为null 就返回默认值 select nvl(13,12);13 select nvl(NULL,12);12 select nvl(null,12);12
isfalse false返回true 别的返回false select isfalse(true);false select isfalse(false);true select isfalse('1234');false
isnotfalse 不是false 返回true 别的返回false select isnotfalse(true);true select isnotfalse(false);false select isnotfalse('1234');true
isnotnull 非空返回true 别的返回false select isnotnull(null);false select isnotnull(NULL);false select isnotnull('1234');true
isnottrue 不是true 返回true 别的返回false select isnottrue(true);false select isnottrue(false);true select isnottrue('1234');false
isnull 空返回true 别的返回false select isnull(null);true select isnull(NULL);true select isnull('1234');false
istrue true返回true 别的返回false select istrue(true);true select istrue(false);false select istrue('-1234');true
assert_true 如果不为true的话抛出异常,true返回NULL。这个函数还不如if呢  
assert_true_oom 仅仅测试模式可用  
enforce_constraint 强制非空检查 内部使用  

不知道怎么分类函数

函数简介用法
create_union 将第一个参数和后面第一个参数对应的值union起来 select create_union(3,'a','b','c','d','e','f');{3:"d"}
stack 将列转换为第一个参数的行数 SELECT stack(1, "en", "dbpedia", NULL );col0 col1 col2 en dbpedia NULL
restrict_information_schema 是否强制信息 内部使用 select restrict_information_schema();false
sentences 按照空格将输入语句变成数组 SELECT sentences("Hive is an excellent tool for data querying") AS value;[["Hive","is","an","excellent","tool","for","data","querying"]]
sq_count_check 对标量子查询表达式进行内部检查,以确保返回最多一行 select sq_count_check(id) from data;
width_bucket

width_bucket(expr, min_value, max_value, num_buckets)

 

min_value<expr<max_value 均值映射

expr>max_value=max_value+1 

expr<min_value=1

select width_bucket(2,1,4,4);2
merge 合并表 full join 类似的功能 

set hive.support.concurrency=true;
set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;
set hive.enforce.bucketing = true;
set hive.exec.dynamic.partition.mode = nonstrict;
set hive.compactor.initiator.on = true;
set hive.compactor.worker.threads = 1;
set hive.auto.convert.join=false;
set hive.merge.cardinality.check=false;

ALTER TABLE data_year_orc SET TBLPROPERTIES ("transactional"="true");
select * from data_year_orc;

explain merge into data_year_orc as table_a

USING data_year as table_b
on table_a.year = table_b.year
WHEN MATCHED and (table_a.year = '2014') THEN UPDATE SET b=table_b.b
WHEN MATCHED and table_b.year = '2015' then delete
WHEN NOT MATCHED then insert VALUES(table_b.year,table_b.b);

暂未理解、废弃函数

函数简介用法
bloom_filter 布隆过滤器,应该是用于索引的。但是hive 3.0 起删除索引 建议使用parquet和orc文件  
in_bloom_filter 布隆过滤器 废弃了  
cardinality_violation select cardinality_violation(id) from data;在源码里面搜到explain merge 会有,但是没有不知道为什么  
context_ngrams 第一个参数字符串数组、字符串数组数组 第二个参数将估计主要表达式中ab之后的前'k'个单词 第四个参数是内存 出来结果是NULL 看不懂这个函数 SELECT context_ngrams(sentences(user_id), array('a','b',null), 3).estfrequency FROM data;
get_splits 暂时不知道这个函数用法 没有tez引擎 select get_splits('abcdefgh',4);
histogram_numeric 使用第二个参数bin计算数字'expr'的直方图 select histogram_numeric(id,3) from data;[{"x":2022.0,"y":1.0}]
likeall 暂时不知道这个函数用法 like 多个函数 select * from test where id like any ('%3%','%6%');但是没有调通
likeany 暂时不知道这个函数用法 like 多个函数 select * from test where id like any ('%3%','%6%');但是没有调通
matchpath 暂时看不懂这个函数的意思 create table flights_tiny_n0 ( ORIGIN_CITY_NAME string, DEST_CITY_NAME string, YEAR int, MONTH int,DAY_OF_MONTH int, ARR_DELAY float, FL_NUM string );select origin_city_name, fl_num, year, month, day_of_month, sz, tpath from matchpath(on flights_tiny_n0 distribute by fl_num sort by year, month, day_of_month arg1('LATE.LATE+'), arg2('LATE'), arg3(arr_delay > 15), arg4('origin_city_name, fl_num, year, month, day_of_month, size(tpath) as sz, tpath[0].day_of_month as tpath') )
murmur_hash    
ngrams 暂时看不懂这个函数的意思,下面是函数的用法 看代码应该是字符串拷贝的类 SELECT ngrams(sentences(lower('abcd')), 2, 100, 1000).estfrequency ;
noop 暂时看不懂这个函数的意思,下面是函数的用法 看代码应该是字符串拷贝的类 select count(id) from noop(on data_par partition by id);
noopstreaming 暂时看不懂这个函数的意思,下面是函数的用法 看代码应该是字符串拷贝的类 select count(id) from noopstreaming(on data_par partition by id);
noopwithmap 暂时看不懂这个函数的意思,下面是函数的用法 看代码应该是字符串拷贝的类 select count(id) from noopwithmap(on data_par partition by id);
noopwithmapstreaming 暂时看不懂这个函数的意思,下面是函数的用法 看代码应该是字符串拷贝的类 select count(id) from noopwithmapstreaming(on data_par partition by id);
windowingtablefunction 暂时不知道这个函数用法 这个函数在hive 测试中没有一个测试用例,应该是内部函数  

字符串掩盖函数

mask 掩盖给定值

    mask(value,upperChar, lowerChar,digitChar,otherChar,numberChar,dayValue,monthValue,yearValue)

upperChar - 用大写字符替换大写字符的字符。指定-1以保留原始字符。默认值:'     lowerChar - 用小写替换小写字符的字符。指定-1以保留原始字符。默认值:'x'
digitChar - 用数字字符替换的字符。指定-1以保留原始字符。默认值:'    otherChar - 用其替换所有其他字符的字符。指定-1以保留原始字符。默认值:-1
numberChar - 用数字替换数字的字符。有效值:0-9。默认值:'   dayValue - 用日期替换日期字段的值。指定-1以保留原始值。有效值:1-31。默认值:1
monthValue - 用日期替换日期中的月份字段的值。指定-1以保留原始值。有效值:0-11。默认值:0   yearValue - 用日期替换年份字段的值。指定-1以保留原始值。默认值:0

mask_first_n 掩盖值的前n个字符

     mask_first_n(value,charCount,upperChar,lowerChar,digitChar,otherChar, numberChar)

     value - 要屏蔽的值。支持的类型:TINYINT,SMALLINT,INT,BIGINT,STRING,VARCHAR,CHAR
     charCount - 字符数。默认值:4
     upperChar - 用大写字符替换大写字符的字符。指定-1以保留原始字符。默认值:'
     X'lowerChar - 用小写替换小写字符的字符。指定-1以保留原始字符。默认值:'x'
     digitChar - 用数字字符替换的字符。指定-1以保留原始字符。默认值:'
     n'otherChar - 用其替换所有其他字符的字符。指定-1以保留原始字符。默认值:-1
     numberChar - 用数字替换数字的字符。有效值:0-9。默认值:'1'

mask_hash 返回给定值的哈希值

    select mask_hash('1234');03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4

mask_last_n 屏蔽值的最后n个字符

    mask_last_n(value,charCount,upperChar,lowerChar,digitChar,otherChar, numberChar)

value - 要屏蔽的值。支持的类型:TINYINT,SMALLINT,INT,BIGINT,STRING,VARCHAR,CHAR  charCount-字符数。默认值:4
upperChar - 用大写字符替换大写字符的字符。指定-1以保留原始字符。默认值:'  lowerChar - 用小写替换小写字符的字符。指定-1以保留原始字符。默认值:'x'
digitChar - 用数字字符替换的字符。指定-1以保留原始字符。默认值:'   otherChar - 用其替换所有其他字符的字符。指定-1以保留原始字符。默认值:-1
numberChar - 用数字替换数字的字符。有效值:0-9。默认值:'1' 

mask_show_first_n 掩码除了值的前n个字符以外的所有字符

    mask_show_first_n(value,charCount,upperChar,lowerChar,digitChar,otherChar ,numberChar)

value - 要屏蔽的值。支持的类型:TINYINT,SMALLINT,INT,BIGINT,STRING,VARCHAR,CHAR  charCount - 字符数。默认值:4
upperChar - 用大写字符替换大写字符的字符。指定-1以保留原始字符。默认值:'  lowerChar - 用小写替换小写字符的字符。指定-1以保留原始字符。默认值:'x'
digitChar - 用数字字符替换的字符。指定-1以保留原始字符。默认值:'  otherChar - 用其替换所有其他字符的字符。指定-1以保留原始字符。默认值:-1
numberChar - 用数字替换数字的字符。有效值:0-9。默认值:'1'

mask_show_last_n 掩码除了值的最后n个字符之外的所有

    mask_show_last_n(value,charCount,upperChar,lowerChar,digitChar,otherChar ,numberChar)

value - 要屏蔽的值。支持的类型:TINYINT,SMALLINT,INT,BIGINT,STRING,VARCHAR,CHAR
charCount - 字符数。默认值:4   upperChar - 用大写字符替换大写字符的字符。指定-1以保留原始字符。默认值:' lowerChar - 用小写替换小写字符的字符。指定-1以保留原始字符。默认值:'x'
digitChar - 用数字字符替换的字符。指定-1以保留原始字符。默认值:'  otherChar - 用其替换所有其他字符的字符。指定-1以保留原始字符。默认值:-1
numberChar - 用数字替换数字的字符。有效值:0-9。默认值:'1'

标签:字符,functions,函数,hive,字符串,true,id,select,大全
来源: https://www.cnblogs.com/wuxiaolong4/p/16585643.html