Hive常用函数用法

查看函数用法

命令如下:

desc function extended FUNC_NAME;

使用方法:
在这里插入图片描述


数学函数

log()

log(x,y) — 返回以x为底数的y的对数

命令:

select log(2,4);

结果:
在这里插入图片描述


pow()

pow(x,y) — 取x的y次方

命令:

select pow(2,3);

结果:在这里插入图片描述


conv()

conv(bigint/string base,int from_base,int to_base) — 将base从from_base的进制数转换成to_base的进制数

命令:

select conv(1100,2,10);

结果:在这里插入图片描述
命令:

select conv('100',10,2);

结果:在这里插入图片描述


pmod()

pmod(int/double a,int/double b) — 取模

命令:

select pmod(5,2);

结果:在这里插入图片描述


abs()

abs(double/decimal x) — 求x的绝对值

命令:

select abs(-20);

结果:在这里插入图片描述


floor()

floor(double/decimal x) — 去除x的小数位

命令:

select floor(6.66);

结果:在这里插入图片描述


ceil()

ceil(double/decimal x) — 将x向上取整数

命令:

select ceil(6.66);

结果:在这里插入图片描述


rand()

rand() — 返回0~1的内的随机数

命令:

select rand();

结果:
在这里插入图片描述


round()

round(double/decimal x) — 将小数x四舍五入取整

命令:

select round(5.55);

结果:在这里插入图片描述

degrees()

degrees(double/decimal a) — 将弧度a转化为角度double

命令:

select degrees(2.56);

结果:在这里插入图片描述


radians()

radians(double/decimal a) — 将角度a转化为弧度double

命令:

select radians(2.56);

结果:在这里插入图片描述


positive()

positive(int/double a) — 返回a

命令:

select positive(15);

结果:在这里插入图片描述


negative()

negative(int/double a) — 返回-a

命令:

select negative(15);

结果:在这里插入图片描述


sign()

sign(double/decimal a) — 返回a的符号

命令:

select sign(8);

结果:在这里插入图片描述
命令:

select sign(-8);

结果:在这里插入图片描述
命令:

select sign(0);

结果:在这里插入图片描述


e/pi()

e()/pi() — 返回e/Π的值

命令:

select e();
select pi();

结果:在这里插入图片描述
在这里插入图片描述


greatest()

greatest(T…vs) — 返回参数中最大的值

命令:

select greatest(1,3,5);

结果:在这里插入图片描述


least()

least(T…vs) — 返回参数中最小的值

命令:

select least(1,3,5);

结果:在这里插入图片描述


集合函数

size()

size(Map<K,V>/Array< T>) — 返回键值对/集合的个数,返回类型是int

命令:

--scores字段类型为Map
select size(scores) from employee_id;

结果:在这里插入图片描述
命令:

--cities字段类型为array
select size(cities) from employee_id;

结果:在这里插入图片描述


map_keys()

map_keys(Map<K,V>) — 返回一个无序数组,包含输入映射的键

命令:

--scores字段类型为Map
select map_keys(scores) as subject from employee1;

结果:在这里插入图片描述


map_values()

map_values(Map<K,V>) — 返回一个无序数组,包含输入映射的值

命令:

--cities字段类型为array
select map_values(scores) as score from employee1;

结果:在这里插入图片描述


array_contains()

array_contains(Array,T) — 如果参数1集合中含有参数2的值,返回true

命令:

select array_contains(cities,'Montreal') from employee1;

结果:
在这里插入图片描述


sort_array()

sort_array(Array) — 按升序对参数数组排序

命令:

select sort_array(map_values(volumn)) from shop;

结果:在这里插入图片描述


array()

array(T…t) — 用参数给定的元素创建数组

命令:

select array('我','和','你');

结果:在这里插入图片描述


map()

map(K k1,V v1,…) — 用参数给定的键/值对创建一个映射

命令:

select map('sub','hive','score',100);

结果:在这里插入图片描述


struct()

struct(p1,v1,p2,v2,…) — 用参数给定的字段值创建结构

命令:

select struct('sub','score','pass');

结果:在这里插入图片描述


日期函数

from_unixtime()

from_unixtime(bigint time,string format) — 以指定的格式format返回time

命令:

select from_unixtime(124124124,'yyyy-MM-dd');

结果:在这里插入图片描述


date_format()

date_format(date/timestamp/string date,string format) — 将日期/时间戳/字符串转换为日期格式format指定的字符串值

命令:

select date_format(current_date(),'yyyy-MM-dd hh:mm:ss');

结果:在这里插入图片描述
命令:

select date_format(current_timestamp(),'yyyy-MM-dd hh:mm:ss');

结果:在这里插入图片描述


current_date()

current_date() — 获得当前日期

命令:

select current_date();

结果:
在这里插入图片描述


to_date()

to_date(string timestamp) — 提取timestamp中的年月日

命令:

select to_date(current_timestamp());

结果:在这里插入图片描述


current_timestamp()

current_timestamp() — 获得当前具体时间(年-月-日 时:分:秒.毫秒)

命令:

select current_timestamp();

结果:在这里插入图片描述


unix_timestamp()

unix_timestamp(string datetime) — 把参数时间转换为数字

命令:

select unix_timestamp(current_date());

结果:在这里插入图片描述


date_add()

date_add(string date,int days) — 返回days天之后的date,days可以是负数

命令:

select date_add(current_date(),5);

结果:在这里插入图片描述
命令:

select date_add(current_date(),-5);

结果:在这里插入图片描述


add_months()

add_months(string date,int months) — 返回months月之后的date,months可以是负数

命令:

select add_months(current_date(),3);

结果:在这里插入图片描述
命令:

select add_months(current_date(),-3);

结果:在这里插入图片描述


next_day()

next_day(string date,string dayOfWeek) — 返回date之后的下一个dayOfWeek为哪一天

命令:

--‘SU’为星期日
select next_day(current_date(),'SU');
--返回今天之后的下一个星期日为哪一天

结果:在这里插入图片描述


last_day()

last_day(string date) — 返回该月最后一天的日期

命令:

select last_day(current_date());

结果:在这里插入图片描述


trunc()

trunc(string date,string format) — 返回日期的最开始日期

命令:

--'YY'代表返回该日期的年的第一天
select trunc(current_date(),'YY');

结果:在这里插入图片描述
命令:

--'MM'代表返回该日期的月的第一天
select trunc(current_date(),'MM');

结果:在这里插入图片描述


datediff()

datediff(string date1,string date2) — 计算两个日期天数的差值

命令:

select datediff('2020-11-11','1999-05-15');

结果:在这里插入图片描述


months_between()

months_between(string date1,string date2) — 计算两个日期月份的差值

命令:

select months_between('2020-11-11','1999-05-15');

结果:在这里插入图片描述


例题

1.计算本季度第一天

命令:

select concat_ws('-',cast(year(current_date) as string),cast(ceil(month(current_date())/3)*3-2 as string),'1');

结果:在这里插入图片描述


2.计算本周第一天

命令:

select date_add(next_day(current_date(),'SU'),-7);

结果:在这里插入图片描述


条件函数

if()

if(expr1,expr2,expr3) — 如果expr1为真(expr1<>0且expr1<>null)则返回expr2,否则返回expr3

命令:

select if(1<>1,'yes','no');

结果:在这里插入图片描述
命令:

select if(1=1,'yes','no');

结果:在这里插入图片描述


nvl()

nvl(value,default_value) — 如果value为空,则返回default_value,否则返回value

命令:

select nvl(null,'hive');

结果:在这里插入图片描述

select nvl('hadoop','hive');

结果:在这里插入图片描述


coalesce()

coalesce(T…vs) — 返回第一个非null值

命令:

select coalesce(null,'map','reduce','hdfs');

结果:在这里插入图片描述


case()

1.case a when b then c when d then e else … end
当a=b,返回c,当a=d,返回e…

命令:

select case name when 'Will' then 'weier' when 'Lucy' then 'luxi' else 'somebody' end from employee1;

结果:在这里插入图片描述

2.case when a then … when b then … else … end

命令:

select name,case when name='Will' then 'W' when name='Lucy' then 'L' else 'SB.' end from employee1;

结果:在这里插入图片描述


isnull()

isnull(a) — 如果a为空,返回true,否则返回false

命令:

select isnull(null);

结果:在这里插入图片描述


isnotnull()

isnotnull(a) — 如果a不为空,返回true,否则返回false

命令:

select isnotnull(null);

结果:在这里插入图片描述


字符串函数

ascii()

ascii(string a) — 返回字符串首字母的阿斯克码

命令:

select ascii('abc');

结果:在这里插入图片描述


concat_ws()

concat_ws(string sep,array< string>/string…array) — 以sep拼接数组或字符串

命令:

select concat_ws('+','I','love','China');

结果:在这里插入图片描述
命令:

select concat_ws('+',array('I','and','you'));

结果:在这里插入图片描述


sentences()

sentences(string sentence) — 将str分割成句子数组,其中每个句子是单词数组

命令:

select sentences('I like hive!I love you,anyway');

结果:在这里插入图片描述


ngrams()

ngrams(array<array< string>> arr,int n,int k) — 按n个单词出现频次,倒序取TOP k

命令:

select ngrams(array('you','me'),array('you','I'),array('he','I'),1,2);

结果:在这里插入图片描述
命令:

select select ngrams(sentences('my boy!you are handsome~are you?'),1,2);

结果:在这里插入图片描述


context_ngrams()

context_ngrams(array<array< string>>) arr,array< string>,int k) — 在第一个参数集合里,第二个参数中指定单词之后的单词出现频次,倒序取TOP K,第二个参数指定一个单词字符串,该字符串指定n-gram元素的位置,其中一个null代表必须由n-gram元素填充的“空白”

命令:

select context_ngrams(sentences('you are?you bad!you bad@you are!are you bad'),array('you',null),2);

结果:在这里插入图片描述


encode

字符集:‘US-ASCII’, ‘ISO-8859-1’, ‘UTF-8’, ‘UTF-16BE’, ‘UTF-16LE’, ‘UTF-16’
encode(string source,string charset) — 使用第二个参数字符集对第一个参数进行编码

命令:

select encode('我爱中华001abc你们','UTF-16BE');

结果:在这里插入图片描述


decode

decode(string source,string charset) — 使用第二个参数字符集解码第一个参数

命令:

select decode(encode('我爱中华001abc你们','UTF-16BE'),'UTF-16BE');

结果:在这里插入图片描述


format_number()

format_number(decimal X,int D) — 将数字X格式化为’#,###,###.##’,四舍五入到小数点后D位

命令:

select format_number(31321.56762,2);

结果:在这里插入图片描述


get_json_object()

get_json_object(string json,string path) — 根据指定的json路径从json字符串中提取json对象,并返回提取的json对象的json字符串。如果输入的json字符串无效,它将返回null

命令:

select get_json_object('{"name":"kyrie"}','$.name');

结果:在这里插入图片描述
命令:

select get_json_object('{"name":"kyrie","info":{"city":"NJ"}}','$.info.city');

结果:在这里插入图片描述


in_file()

in_file(strirng str,string filename) — 如果str出现在filename中,返回true

查看people.txt文件内容
在这里插入图片描述
命令:

select in_file('006,jasper,24,2017-12-12','/root/test/people.txt');

结果:
在这里插入图片描述


parse_url()

parse_url(string urlString,string part[,string key]) — 返回 URL 中指定的部分。partToExtract 的有效值为:HOST, PATH, QUERY, REF,PROTOCOL, AUTHORITY, FILE, and USERINFO

命令:

select parse_url('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1', 'HOST');

结果:
在这里插入图片描述
命令:

select parse_url('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1', 'QUERY',
'k1');

结果:
在这里插入图片描述


printf()

printf(string format,T…t) — 格式化输出

命令:

select printf('%s-%d-%s','I',520,'U');

结果:
在这里插入图片描述


regexp_replace()

regexp_replace(string A, string B, string C) — 将字符串A中的符合java正则表达式B的部分替换为C

命令:

select regexp_replace('hivefunc','vefu','my');

结果:
在这里插入图片描述


regexp_extract()

regexp_extract(string subject, string pattern, int index) — 将字符串subject按照pattern正则表达式的规则拆分,返回index指定的字符

命令:

select regexp_extract('namehenryokdalingduck','name(.*?)(ok)(.*?)duck',3);

结果:
在这里插入图片描述


split()

split(string str, string pat) — 按照pat字符串分割str,会返回分割后的字符串数组

命令:

select split('hiveisgod','is');

结果:
在这里插入图片描述


str_to_map()

str_to_map(string src,string sep1,string sep2) — 将字符串str按照指定分隔符转换成Map
sep1为键值对之间分隔符默认为’,‘sep2为键和值之间分隔符默认为’:’

命令:

select str_to_map('name:jun,sub:hive');

结果:
在这里插入图片描述
命令:

select str_to_map('name-jun=sub-hive','=','-');

结果:
在这里插入图片描述


translate()

translate(string src,string from,string to) — 用to替换src里的from,无关位置
命令:

select translate('aabbcc','ab','#*')

结果:
在这里插入图片描述


initcap

initcap(string str) — 返回str,每个单词的第一个字母大写,其他所有字母小写,文字由空格分隔

命令:

select initcap('word count is Mr');

结果:
在这里插入图片描述


substr/substring

substr(string src,int begin[,int len]) — 截取[len]长度的字符
substring用法相同

命令:

select substr('whysoserious',4);

结果:
在这里插入图片描述
命令:

select substring('whysoserious',4,2);

结果:
在这里插入图片描述


locate()

locate(string sub,string src[,int startPos]) — 返回sub第一次出现在startPos之后的位置,子前父后
命令:

select locate('abc','abc123abc');

结果:
在这里插入图片描述
命令:

select locate('abc','abc123abc',2);

结果:
在这里插入图片描述


instr()

instr(string src,string sub) — 返回sub第一次在src出现的位置,父前子后

命令:

select instr('abc123qqq',1);

结果:
在这里插入图片描述


md5()

md5(string src) — 加密

命令:

select md5('hivepassword');

结果:
在这里插入图片描述


soundex()

soundex(string src) — 返回字符串首字母+3个数字

命令:

select soundex('abc');

结果:
在这里插入图片描述


d

d

d

d

d

猜你喜欢

转载自blog.csdn.net/weixin_48482704/article/details/109628681