ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

hive functions 大全

2022-08-14 16:35:07  阅读:180  来源: 互联网

标签:字符 functions 函数 hive 字符串 true id select 大全


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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有