HIVE函数总结

一、时间函数

1、unix时间戳转日期函数:from_unixtime()

语法:from_unixtime(bigint unixtime,'string format')

返回值:string

说明:转化unix时间戳(从1970-01-01 00:00:00 UTC到指定时间的秒数)到当前时区的时间格式

eg:select from_unixtime(12334454333,'yyyyMMdd') from default.dual;

2、获取当前unix时间戳函数:unix_timestamp()

语法:unix_timestamp()

返回值:bigint

说明:获得当前时区的unix时间戳

3、日期转unix时间戳函数:unix_timestamp()

语法:unix_timestamp(string date)

返回值:bigint

说明:转换格式为"yyyy-MM-dd HH-mm-ss"的日期到unix时间戳。如果转化失败,则返回0

4、指定格式日期转unix时间戳函数:unix_timestamp()

语法:unix_timestamp(string date,string pattern)

返回值:bigint

说明:转换pattern格式的日期到unix时间戳。如果转化失败,则返回0

5、日期时间转日期函数:to_date()

语法:to_date(string timestamp)

返回值:string

说明:返回日期时间字段中的日期部分

6、日期转年函数:year()

语法:year(string date)

返回值:int

说明:返回日期中的年

7、日期转月函数:month()

语法:month(string date)

返回值:int

说明:返回日期中的月

8、日期转天函数:day()

语法:day(string date)

返回值:int

说明:返回日期中的天

9、日期转小时函数:hour()

语法:hour(string date)

返回值:int

说明:返回日期中的小时

10、日期转分钟函数:minute()

语法:minute(string date)

返回值:int

说明:返回日期中的分钟

11、日期转秒函数:second()

语法:second(string date)

返回值:int

说明:返回日期中的秒

12、日期转周函数:weekofyear(string date)

语法:weekofyear(string date)

返回值:int

说明:返回日期在当前的周数

13、日期比较函数:datediff

语法:datediff(string enddate,string startdate)

返回值:int

说明:返回结束日期减去开始日期的天数

14、日期增加函数:date_add()

语法:date_add(string startdate,int days)

返回值:string

说明:返回开始日期startdate增加days天后的日期

15、日期减少函数:date_sub()

语法:date_sub(string startdate,int days)

返回值:返回开始日期startdate减少days天后的日期

16、日期整月变化函数:add_months()

语法:add_months('yyyy-MM-dd',int num)

返回值:返回传入日期N个月后的日期(N为正为往后推,N为负往前推)

17、日期返回当月第N天:dayofmonth()

语法:dayofmonth('yyyy-MM-dd')

返回值:返回传入日期是当月第几天

二、条件函数

1、if函数:if

语法:if(boolean testCondition, T valaueTrue,T valueFalseOrNull)

返回值:T

说明:当条件testCondition为true时,返回valueTrue;否则返回valueFalseOrNull

eg:select if(1=2,100,200) from dual;

200

select if(1=1,100,200) from dual;

100

2、非空查找函数:coalesce

语法:coalesce(T v1,T v2,...)

返回值:T

说明:返回参数中的第一个非空值;如果所有的值都为null,那么返回null

eg:select coalesce(NULL,'100','50') from dual;

100

3、条件判断函数:case

语法:case a when b then c [when d then e]*[else f] end

返回值:T

说明:如果a=b,则返回c;如果a=d,则返回e;否则返回f

eg:select case 100 when 50 then 'tom' when 100 then 'mary' else 'tim' end from dual;

mary

select case 200 when 50 then 'tom' when 100 then 'mary' else 'tim' end from dual;

tim

4、条件判断函数:case

语法:case when a then b [when c then d]*[else e] end

返回值:T

说明:如果a为true,则返回b;如果c为true,则返回d;否则返回e

eg:select case when 1=2 then 'tom' when 2=2 then 'mary' else 'tim' end from dual;

mary

select case when 1=1 then 'tom' when 1=2 then 'mary' else 'tim' end from dual;

tom

 

三、字符串函数

1、字符串长度计算函数 length

语法:length(string A)

返回值:int

说明:返回字符串A的长度

2、字符串反转函数 reverse

语法:reverse(string A)

返回值:string

说明:返回字符串A的反转结果

3、字符串连接函数 concat

语法:concat(string A,string B,...)

返回值:string

说明:返回输入字符串连接后的结果,支持任意个输入字符串

4、带分隔符字符串连接函数 concat_ws()

语法:concat_ws(string SEP,string A,string B,...)

返回值:string

说明:返回字符串连接后的结果,SEP表示各字符串间的分隔符

5、字符串截取函数 substr、substring

语法:substr(string A,int start,int len) \ substring(string A,int start,int len)

返回值:string

说明:返回字符串A从start位置开始,长度len的字符串。start可以为负,为负表示从倒数第len位开始计数。

注:开始计数位置为1,不是0

注:第三个len参数可以不加,表示从标记位到结尾的字符串。

6、字符串转大写函数 upper、ucase

语法:upper(string A) / ucase(string B)

返回值:string

说明:返回字符串A的大写格式

7、字符串转小写函数 lower、lcase

语法:lower(string A) / lcase(string B)

返回值:string

说明:返回字符串A的小写格式

8、去空格函数 trim

语法:trim(string A)

返回值:string

说明:去除字符串两边的空格

9、左边去空格函数 ltrim

语法:ltrim(string A)

返回值:string

说明:去除字符串左边的空格

10、右边去空格函数 rtrim

语法:rtrim(string A)

返回值:string

说明:去除字符串右边的空格

11、正则表达式替换函数 regexp_replace

语法:regexp_replace(string A,string B,string C)

返回值:string

说明:将字符串A中的符合java正则表达式B的部分替换为C

注意:在有些情况下要使用转义字符,类似oracle中的regexp_replace()函数

12、正则表达式解析函数 regexp_extract

语法:regexp_extract(string subject,string pattern,int index)

说明:将字符串subject按照pattern正则表达式的规则拆分,返回index指定的字符串

eg:

hive (db_hive)> select regexp_extract('foothebar','foo(.*?)(bar)',1) from dual;

OK

_c0

the

Time taken: 0.043 seconds, Fetched: 1 row(s)

 

hive (db_hive)> select regexp_extract('foothebar','foo(.*?)(bar)',2) from dual;

OK

_c0

bar

Time taken: 0.036 seconds, Fetched: 1 row(s)

 

hive (db_hive)> select regexp_extract('foothebar','foo(.*?)(bar)',0) from dual;

OK

_c0

foothebar

Time taken: 0.031 seconds, Fetched: 1 row(s)

 

注意:在有些情况下要使用转义字符,=要用双竖线转义,java正则表达式的规则。

13、URL解析函数 parse_url

语法:parse_url(string urlString,string partToExtract [,stringkeyToExtract])

返回值:string

说明:返回URL中指定部分。partToExtract的有效值为:HOST,PATH,QUERY,PROTOCOL,AUTOHORITY,FILE,and USERINFO.

14、json解析函数 get_json_object ---解析一个字段

语法:get_json_object(string json_string,string path)

返回值:string

说明:解析json的字符串json_string,返回path指定的内容。如果输入的json字符串无效,那么返回null。

hive (db_hive)> SELECT get_json_object('{"website":"www.baidu.com","name":"????"}', '$.website') from dual;

OK

_c0

www.baidu.com

Time taken: 0.204 seconds, Fetched: 1 row(s)

 

15、json解析函数 json_tuple ---用来解析json字符串的多个字段

语法:lateral view json_tuple(json_string,'filtertype','filtersubtype','filtername') b as filtertype,filtersubstring,filtername;

返回值:string

说明:解析json的字符串json_string中的多个字段

hive (db_hive)> select json_tuple('{"website":"www.baidu.com","name":"mabowen"}', 'website', 'name');

OK

c0 c1

www.baidu.com

Time taken: 0.056 seconds, Fetched: 1 row(s)

16、空格字符串函数 space

语法:space(int n)

返回值:string

说明:返回长度为n的字符串

17、重复字符串函数 repeat

语法:repeat(strng str,int n)

返回值:string

说明:返回重复n次后的字符串

hive (db_hive)> select repeat('abc',2) from dual;

OK

_c0

abcabc

Time taken: 0.039 seconds, Fetched: 1 row(s)

18、首字符ascii函数 ascii

语法:ascii(string str)

返回值:int

说明:返回字符串str第一个字符的ascii码

hive (db_hive)> select ascii('Aaaa') from dual;

OK

_c0

65

Time taken: 0.029 seconds, Fetched: 1 row(s)

19、左补足函数 lpad

语法:lpad(string str,int len,string pad)

返回值:string

说明:将str字符用pad字符左补足到len位

hive (db_hive)> select lpad('abc',10,'td') from dual;

OK

_c0

tdtdtdtabc

Time taken: 0.041 seconds, Fetched: 1 row(s)

20、右补足函数 rpad

语法:rpad(string str,int len,string pad)

返回值:string

说明:将str字符用pad进行右补足到len位

hive (db_hive)> select rpad('abc',10,'td') from dual;

OK

_c0

abctdtdtdt

Time taken: 0.039 seconds, Fetched: 1 row(s)

注:pad不支持默认。

21、分割字符串函数 split

语法:split(string str,string pat)

返回值:array

说明:按照pat字符串分割str,

hive (db_hive)> select split('mbw-xgm','-') from dual;

OK

_c0

["mbw","xgm"]

Time taken: 0.038 seconds, Fetched: 1 row(s)

22、集合查找函数 find_in_set

语法:find_in_set(string str,string srtList)

返回值:int

说明:返回str在strlist第一次出现的位置,strlist是用逗号分割的字符串。如果没有找到该str字符,则返回0

hive (db_hive)> select find_in_set('mbw','mbw,xgm,mbw') from dual;

OK

_c0

1

Time taken: 0.036 seconds, Fetched: 1 row(s)

 

hive (db_hive)> select find_in_set('xgm','mbw,xgm,mbw') from dual;

OK

_c0

2

Time taken: 0.03 seconds, Fetched: 1 row(s)

 

hive (db_hive)> select find_in_set('ml','mbw,xgm,mbw') from dual;

OK

_c0

0

Time taken: 0.038 seconds, Fetched: 1 row(s)

 

你可能感兴趣的:(hive)