hive函数大全

hive函数大全

  • 一级目录
    • !
    • !=
    • %
    • &
    • *
    • +
    • -
    • /
    • <
    • <=
    • <=>
    • <>
    • =
    • ==
    • >
    • >=
    • ^
    • abs
    • acos
    • add_months
    • and
    • array
    • array_contains
    • ascii
    • asin
    • assert_true
    • atan
    • avg
    • base64
    • between
    • bin
    • bround
    • case
    • cbrt
    • ceil
    • ceiling
    • chr
    • coalesce
    • collect_list
    • collect_set
    • concat
    • concat_ws
    • context_ngrams
    • conv
    • corr
    • cos
    • count
    • covar_pop
    • covar_samp
    • crc32
    • create_union
    • cume_dist()
    • current_database
    • current_date
    • current_timestamp
    • current_user
    • date_add
    • date_format
    • date_sub
    • datediff
    • day
    • dayofmonth
    • dayofweek
    • decode
    • degrees
    • dense_rank
    • div
    • e
    • elt
    • encode
    • ewah_bitmap
    • ewah_bitmap_and
    • ewah_bitmap_empty
    • ewah_bitmap_or
    • exp
    • explode
    • factorial
    • field
    • find_in_set
    • first_value
    • floor
    • floor_day
    • floor_hour
    • floor_minute
    • floor_month
    • floor_quarter
    • floor_second
    • floor_week
    • floor_year
    • format_number
    • from_unixtime
    • from_utc_timestamp
    • get_json_object
    • get_splits
    • greatest
    • grouping
    • hash
    • hex
    • histogram_numeric
    • hour
    • if
    • in
    • in_file
    • index
    • initcap
    • inline
    • instr
    • internal_interval
    • isnotnull
    • isnull
    • java_method
    • json_tuple
    • lag
    • last_day
    • last_value
    • lcase
    • lead
    • least
    • length
    • levenshtein
    • like
    • ln
    • locate
    • log
    • log10
    • log2
    • logged_in_user
    • lower
    • lpad
    • ltrim
    • map
    • map_keys
    • map_values
    • mask
    • mask_first_n
    • mask_hash
    • mask_last_n
    • mask_show_first_n
    • mask_show_last_n
    • matchpath
    • max
    • md5
    • min
    • minute
    • month
    • months_between
    • named_struct
    • negative
    • next_day
    • ngrams
    • not
    • ntile
    • nvl
    • or
    • parse_url
    • parse_url_tuple
    • percent_rank
    • percentile
    • percentile_approx
    • pi
    • pmod
    • posexplode
    • positive
    • pow
    • power
    • printf
    • quarter
    • radians
    • rand
    • rank
    • reflect
    • regexp
    • regexp_extract
    • regexp_replace
    • repeat
    • replace
    • reverse
    • rlike
    • round
    • row_number
    • rpad
    • rtrim
    • second
    • sentences
    • sha
    • sha1
    • sha2
    • shiftleft
    • shiftright
    • shiftrightunsigned
    • sign
    • sin
    • size
    • sort_array
    • soundex
    • space
    • split
    • sqrt
    • stack
    • std
    • stddev
    • stddev_pop
    • stddev_samp
    • str_to_map
    • struct
    • substr
    • substring
    • substring_index
    • sum
    • tan
    • to_date
    • to_unix_timestamp
    • to_utc_timestamp
    • translate
    • trim
    • trunc
    • ucase
    • unbase64
    • unhex
    • unix_timestamp
    • upper
    • uuid
    • var_pop
    • var_samp
    • variance
    • version
    • weekofyear
    • when
    • windowingtablefunction
    • xpath
    • xpath_boolean
    • xpath_int/xpath_long/xpath_short/xpath_number/xpath_float/xpath_double
    • xpath_string
    • year
    • |

一级目录

!

取反

select  !(1=1);
>false

!=

不等于号,示例:

select 1 from dul where 2!=1;
>1

%

取余操作,示例:

select 41%5
>1 

&

按位与操作,示例:

select 4&8
>0

*

数据运算符乘,示例:

select 2*3
>6

+

数学运算符加号,实例:

select 1=+2
>3

-

数学运算符加号,实例:

select 3-1
>2

/

数学运算符除号,实例

select 4/2
>2

<

表达式A小于表达式B为true,否则为false

select 1 from dul where 0<1
>1

<=

表达式A小于等于表达式B为true,否则为false

select 1 from dul where 0<1
>1

<=>

可以用来判断null值,如果两个值都为null, 则为true;

select null<=>1;
>false

<>

不等号比较

select * from test where 1 <> 2

=

表达式A和表达式B相等,则为true,否则未false

select 1 from dul where 1=1
>1

==

select 1=='1';
>true

>

表达式A大于表达式B为true,否则为false

select 1 from dul where 2>1
>1

>=

表达式A大于等于表达式B为true,否则为false

select 1 from dul where 1>=1
>1

^

按位异或操作,示例:

select 4^8
>12

abs

取数字的绝对值

select abs('-1')
>1 

acos

如果-1<=X<=1,返回X的反余弦值。否则返回NaN

select acos(0.6216099682706644)
>0.9

add_months

select add_months('2022-10-21 12',1)
>2022-11-21

and

逻辑并运算符,示例:

select 1 from dul where 1=1 and 2=2;
>1

array

使用给定的表达式,构造一个 array 数据结构

select array(1,2,3)
>[1,2,3]

array_contains

array_contains(数组,值)

select array_contains(array(1,2,3),1);
>true

ascii

返回字符串str的第一个字符的ascii码,示例:

select ascii('abcde');
>97

asin

返回a的反正弦值,示例:

select asin(0.7173560908995228);
>0.8

assert_true

select assert_true(1<2) -- 返回null
select assert_true(1>2) -- 抛出异常

atan

返回a的反正切值,示例:

select atan(1.0296385570503641);
>0.8

avg

计算平均值,实例

select avg(a) from (select 1 union all select 2 union all select 3) t
>2

base64

将二进制bin转换成64位字符串

select base64(cast('abc:123' as binary));
>YWJjOjEyMw==

between

作为条件两边包含的,示例:

select 1 from dul where 1 between 1 and 2;
>1

bin

返回a的二进制代码表示,a为bigint类型,示例:

select bin(7);
>111

bround

bround(double a),bround(double a, int d)
银行家舍入法(1-4:舍,6-9:进,5->前位数是奇数:进,5->前位数是偶:舍)

select  bround(3.215);
>3
select  bround(3.25,1);
>3.2

case

Select case 100 when 50 then 'tom' when 100 then 'mary' else 'tim' end from dual;
>'mary'

cbrt

求a的立方根

select cbrt(8);
>2

ceil

说明:返回等于或者大于该double变量的最小的整数,举例:

select ceil(3.1415926) ;
>  4

ceiling

向上取整

select ceil(2.3);
>3

chr

返回指定数字对应的ASCII 字符,如果指定的数字大于256,将对该数字对256取模,示例:

select chr(97);
>a

coalesce

如果第一个参数为空,那就取第二个值

select coalesce(null,null,1,2)
>1

collect_list

将一列的数据进行聚合,最后结果为一个不去重的数组,实例:

select collect_list(a) from (select 1 as a union select 2 union select 3) t 
>[1,2,3]

collect_set

将一列的数据进行聚合,最后结果为一个不去重的集合,实例:

select collect_set(a) from (select 1 as a union select 2 union select 2) t
>[1,2] 

compute_stats

ANALYZE TABLE table_name PARTITION(dt='20230728') COMPUTE STATISTICS;
#查看结果
DESCRIBE extended table_name PARTITION(dt='20230728');

concat

将字符串按照顺序进行拼接

select concat('a','b','c')
>'abc'

concat_ws

所有的字符串按照指定的拼接符进行拼接,实例:

select concat_ws(',','a','b','c')
>'a,b,c'

context_ngrams

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

select context_ngrams(sentences('hello word!hello hive,hi hive,hello hive'),array('hello',null),1) ;
>[{"ngram":["hive"],"estfrequency":2.0}]

conv

conv(BIGINT/string num, int from_base, int to_base)
将bigint/string数据num从from_base进制转化到to_base进制

select conv(17,10,16)
>11

corr

返回两列数值的相关系数

cos

返回a的余弦值,示例:

select cos(0.9);
>0.6216099682706644

count

个数统计函数,示例

select count(*) from (select 1 union all select 2) t;
>2

covar_pop

求指定列数值的协方差

covar_samp

求指定列数值的样本协方差

crc32

加密

select crc32('abc');
>891568578

create_union

使用给定的 tag 和表达式,构造一个 uniontype 数据结构。tag 表示使用第 tag 个
表达式作为 uniontype 的 value

select create_union(0,'ss',array(1,2,3)) from iteblog;
> {0:"ss"}
select create_union(1,'ss',array(1,2,3)) from iteblog;
>{1:[1,2,3]}
select create_union(2,'ss',array(1,2,3),'aa') from iteblog;
> {2:'aa'}

cume_dist()

开窗函函数,单独记录,链接: 传送门

current_database

获取当前所在的database空间,示例:

select current_database()
>test

current_date

获取当前的日期,示例:

select current_date()
>20220-01-02

current_timestamp

获取当前时间的时间戳

select current_timestamp()
>

current_user

获取当前的用户,示例:

select current_user()
>hive

date_add

日期计算函数,在第一个日期上加对应日期,示例:

select date_add('2022-01-03',)

date_format

格式化日期,示例:

 select date_format('2019-1-1', 'yyyy-MM-dd');
 >'2019-01-01'

date_sub

返回开始日期startdate减少days天后的日期,举例:

select date_sub('2012-12-08',10);
>2012-11-28

datediff

返回结束日期减去开始日期的天数。

select datediff('2012-12-08','2012-05-09');
>213

day

返回日期中的天。

select day('2011-12-08 10:03:01');
>8

dayofmonth

返回当前日期是当月的第几天

select dayofmonth('2022-12-13');
>13

dayofweek

返回日期那天的周几,

select dayofweek('2023-07-28');
>6

decode

使⽤指定的字符集charset将⼆进制值bin解码成字符串,⽀持的字符集有:‘US-ASCII’, ‘ISO-8859-1’, ‘UTF-8’, ‘UTF-
16BE’, ‘UTF-16LE’, ‘UTF-16’,如果任意输⼊参数为NULL都将返回NULL

select decode(cast('abc:123' as binary),'US-ASCII');
>abc:123

degrees

弧度值转角度值,返回a的角度值,示例:

select degrees(1);
>57.29577951308232

dense_rank

窗口函数,排序字段值相同时,序号相同,下一个序号顺序自增,窗口函数单独记录,链接: 传送门

div

两数相除取商,与%相反;

SELECT -10 div 3;
>-3

e

数学常数e

select e();
>2.718281828459045

elt

返回给定字符串集中的第N个,若不存在则返回null。例如:

select elt(2,'hello','world') 
>'world'

encode

使用charset方式,将字符串src编码为二进制bin。支持的字符集有:‘US-ASCII’, ‘ISO-8859-1’, ‘UTF-8’, ‘UTF-16BE’, ‘UTF-16LE’, ‘UTF-16’

ewah_bitmap

返回一个ewah压缩的列的位图表示.

ewah_bitmap_and

返回ewah压缩的位图,即两个位图的按位和。

ewah_bitmap_empty

测试ewah压缩位图是否全是零的谓词

ewah_bitmap_or

返回一个ewah压缩的位图,即两个位图的按位或。

exp

返回自然对数e的a次方,a为小数,示例:

select exp(3);
>20.085536923187668

explode

对于a中每个元素,将生成一行且包含改元素

factorial

求a的阶乘,3!=321 ,示例:

select factorial(3);
>6

field

返回val在val1,val2…的位置。若不存在则返回0。例如:

select field('world','say','hello','world')
>3

find_in_set

find_in_set(string str, string strList),返回str在strlist第一次出现的位置,strlist是用逗号分割的字符串。如果没有找该str字符,则返回0

select find_in_set('ab','ef,ab,de') from lxw_dual:
>2

first_value

常口函数,单独记录,链接: 传送门
first_value—最多接受两个参数。第一个参数是你想要的列的第一个值,第二个参数必须是一个布尔值(可选),默认是假的。如果设置为真,它跳过null值

select a,first_value(a)over(order by a) from (select null a union all select 1 union all select 3) t
>null,null
>  1 ,null
>  2 ,null

floor

说明:返回等于或者小于该double变量的最大的整数,举例:

select floor(3.1415926);
> 3

floor_day

入参必须是timestamp,示例:

select floor_day(CURRENT_TIMESTAMP())
>2023-07-28 00:00:00

floor_hour

入参必须是timestamp,示例:

select floor_hour(CURRENT_TIMESTAMP())
>2023-07-28 10:00:00

floor_minute

入参必须是timestamp,示例:

select floor_minute(CURRENT_TIMESTAMP())
>2023-07-28 10:06:00

floor_month

入参必须是timestamp,示例:

select floor_month(CURRENT_TIMESTAMP())
>2023-07-01 00:00:00

floor_quarter

入参必须是timestamp,返回四分之一粒度
param的时间戳,示例:

select floor_quarter(CURRENT_TIMESTAMP())
>2023-01-01 00:00:00

floor_second

入参必须是timestamp,示例:

select floor_second(CURRENT_TIMESTAMP())
>2023-07-28 10:06:12

floor_week

入参必须是timestamp, 返回的是当前所在周周一的日期 ,示例:

select floor_week(CURRENT_TIMESTAMP())
>2023-07-24 00:00:00

floor_year

入参必须是timestamp,示例:

select floor_year(CURRENT_TIMESTAMP())
>2023-01-01 00:00:00

format_number

将数字精确到d位小数,例如:

select format_number(5.123456, 4)
>5.1235

from_unixtime

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

select from_unixtime(1598079966,'yyyy-MM-dd HH:mm:ss');
>2020-08-22 15:06:06

from_utc_timestamp

如果给定的时间戳并非UTC,则将其转化成指定时区下的时间戳,示例:

select from_utc_timestamp('1970-01-01 08:00:00','PST')>1970-01-01

get_json_object

解析json的字符串json_string,返回path指定内容。如果输⼊的json字符串⽆效,那么返回NULL。注意此路径上JSON字符串只
能由数字 字母 下划线组成且不能有⼤写字母和特殊字符,且key不能由数字开头,这是由于Hive对列名的限制

select get_json_object('{
	"store": {
		"fruit": [
			{
				"weight": 8,
				"type": "apple"
			},
			{
				"weight": 9,
				"type": "pear"
			}
		],
		"bicycle": {
			"price": 19.95,
			"color": "red"
		}
	},
	"email": "amy@only_for_json_udf_test.net",
	"owner": "amy"
}','$.owner')
>amy

get_splits

greatest

求最大值,示例:

select greatest(1,2,3);
>3

grouping

分组,sql基本都会用到不做介绍

hash

取str的hash值

select hash('abc');
>96354

hex

hex(bigint a),hex(string a)
如果变量是int类型,那么返回a的十六进制表示,如果变量是string类型则返回字符串的16进制表示,示例:

select hex(17);
>11
select hex('abc');
>616263

histogram_numeric

已b为基准计算col的直方图信息,示例:

select histogram_numeric(100,5);
>[{"x":100.0,"y":1.0}]

hour

返回日期中的小时,示例:

select hour('2021-10-01 12:22:23');
>12

if

条件判断,实例

select if(1=2,'a','b')
>'b'

in

判断是否包含,示例

select 1 from dual where 1 in (1,2,3,4);
>1 

in_file

in_file(string str, string filename)
如果文件名为filename的文件中有一行数据与字符串str匹配成功就返回TRUE

index

返回参数1中的指定元素

select index(array('a','b','c'),2);
>c

initcap

返回字符串,每个单词的第一个字母为大写,所有其他字母为小写。单词由空格分隔

select initcap('abc');
>'Abc'

inline

一行变多行
hive函数大全_第1张图片

instr

查找字符串str中子字符串sbustr出现的位置,如果查找失败将返回0;

select instr('dvfgefggdgaa,'aa'');
>11

internal_interval

该方法不是直接调用它来使用的,它为“INTERVAL(intervalArg)intervalType”构造提供了内部支持

isnotnull

如果a为非null就返回true,示例:

select isnotnull(5)
>true

isnull

表达式A为null,则为true,否则为false

select 1 from dul where null is null
>1

java_method

– hive调用java方法

select java_method("java.lang.Math","max",100,200);
>200

json_tuple

jsonStr是包含JSON数据的字符串,key1,key2等是我们要获取的JSON对象的键,如果我们查询的键不存在,json_tuple函数将返回NULL。例如:

SELECT json_tuple('{"name":"Alice","age":30}','name' as c1 ,'age'as c2);
>  c1   c2
>Alice	30

lag

分析函数,开窗函数单独记录,链接: 传送门

last_day

返回这个月的最后一天的日期,精确到天,示例

select last_day('2022-07-01 10:01:00');
>2022-07-31

last_value

开窗函数单独记录,链接: 传送门

lcase

返回字符串小写格式

select lcase('abSEd');
>absed

lead

开窗函数,链接: 传送门

least

求最小值,示例:

select least(1,2,3);
>1

length

返回字符串A的长度,举例:

select length('abcedfg');
> 7

levenshtein

返回两个字符串之间的Levenshtein距离。(Levenshtein 距离,又称编辑距离,指的是两个字符串之间,由一个转换成另一个所需的最少编辑操作次数。编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符)

select  levenshtein('kitten', 'sitting')
>3

like

简单模糊匹配,示例:

select 1 from dul where 'abcd' like '%b%';
>1

ln

返回a的自然对数

select ln(7.38905609893065);
>2.0

locate

返回substr在str的pos位置后,第一次出现的位置,pos非必传。例如l:

select locate('a', 'abcabc')
>1
select locate('a', 'abcabc',1)
>1
select locate('a', 'abcabc',2)
>4

log

以base为底a的对数,示例:

select log(4256);
>4.0

log10

返回以10为底a的对数,示例:

select log10(100);
>2.0

log2

返回以2为底的a的对数,a为可视小数,示例:

select log2(8);
>3.0

logged_in_user

返回当前会话的用户,示例:

select logged_in_user()
>test

lower

返回字符串的小写形式,示例:

select lower('ABC');
>'abc'

lpad

将str进⾏⽤pad进⾏左补⾜到len位,从左边开始对字符串str使⽤字符串pad填充,最终len长度为⽌,如果字符串str本⾝长度⽐len
⼤的话,将去掉多余的部分

select lpad('abc',10,'td');
>tdtdtdtabc

ltrim

去掉字符串A前面的空格

select ltrim('  abc fg');
>abc fg

map

使用给定的 key-value 对,构造一个 map 数据结构

select map('k1','v1','k2','v2') from iteblog;
>{"k2":"v2","k1":"v1"}

map_keys

返回map结构所有的key,结果为数组

select map_keys(map('k1','v1','k2','v2'));
>["k1","k2"]

map_values

返回map结构所有的value,结果为数组

select map_keys(map('k1','v1','k2','v2'));
>["v1","v2"]

mask

输出默认脱敏后的结果

select mask(要加密字段) from 表名;
select mask(要加密字段,'X','x','#') from 表名         -- 输出自定义脱敏后的结果

mask_first_n

对前n个字符进行脱敏

select mask_first_n(要加密的字段,n) from 表名         

mask_hash

对字段进行hash操作,若是非string类型的字段此函数就返回null

select mask_hash(字段) from 表名;

mask_last_n

对后n个字符进行脱敏,示例:

select mask_last_n(要加密的字段,n) from 表名;

mask_show_first_n

对除了前n个字符之外的字符进行脱敏,示例:

select mask_show_first_n(要加密的字段,n) from 表名;

mask_show_last_n

对除了后n个字符之外的字符进行脱敏

select mask_show_last_n(要加密的字段,n) from 表名;

matchpath

暂时没弄明白

select
tpath
,tpath[0]
,tpath[0].user_id
,tpath[0].visit_time
,concat(tpath[0].user_id,"_",unix_timestamp(tpath[0].visit_time)) as session_id
from matchpath(
on
(select user_id,visit_time
from user_visit
) a
distribute by user_id sort by visit_time
arg1("A.B*"),
arg2("A"),
arg3(floor((unix_timestamp(visit_time) - unix_timestamp(lag(visit_time,1,"1900-01-01 00:00:00")))/60) >= 30),
arg4("B"),
arg5(floor((unix_timestamp(visit_time) - unix_timestamp(lag(visit_time,1,"1900-01-01 00:00:00")))/60) < 30),
arg6('user_id,visit_time,tpath')
)

max

获取最大值,示例:

select max(a) from (select 1 as a  union select 4 union all select 3) t
>4

md5

返回md5码,算是简单的加密

select md5('abc')
900150983cd24fb0d6963f7d28e17f72

min

获取最小值,示例:

select min(a) from (select 1 as a  union select 4 union all select 3) t
>1

minute

返回日期中的分钟

select minute('2022-10-01 12:22:23'):
>22

month

返回日期中的月份

select month('2011-12-08 10:03:01');
>12

months_between

返回date1和date2之间相差的月份

select months_between('2020-06-01','2020-07-01');
>-1

named_struct

相比struct可以取别名,示例:

select named_struct('a',1,'b','aaa','c',FALSE) from tablename;
>{"a":1,"b":"aaa","c":false}

negative

返回 a的相反数,示例:

select negative(-5);
>5

next_day

返回当前时间的下一个星期X所对应的日期,示例

select next_day('2015-01-14','TU');
>2015-01-20

ngrams

统计相同单词数量,倒序取top k,示例:

select ngrams(sentences('hello word!hello hive,hi hive,hello hive'),1,1);
>[{"ngram":["hive"],"estfrequency":3.0}]  

/*
noop
noopstreaming
noopwithmap
noopwithmapstreaming
**/ 无意义函数

not

如果A为false,或者A为null,则为true,否则为false

select 1 from dul where not 1=2
>1

ntile

将有序分区划分为x个称为存储桶的组,并为该分区中的每一行分配存储桶编号。 (此方式存储可以快速计算分位数)

nvl

如果value值为null,就返回default_value,示例:

select nvl(null,5);
>5

or

A与B,任意一个或2个为true,则为true,否则为false

select 1 from dul where 1=2 or 2=2
>1

parse_url

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

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

parse_url_tuple

返回从URL中抽取指定N部分的内容,参数url是URL字符串,⽽参数p1,p2,…是要抽取的部分,这个参数包含HOST, PATH,
QUERY, REF, PROTOCOL, AUTHORITY, FILE, USERINFO, QUERY:

percent_rank

窗口函数, 含义就是 当前行-1 / 当前组总行数-1,链接: 传送门

percentile

求准确的第pth个百分位数,p必须介于0和1之间,但col字段目前只支持整数,

percentile_approx

求近似的第pth个百分位数,p必须介于0和1之间,返回类型为double,但是col字段⽀持浮点类型。参数B控制内存消耗的近似精
度,B越⼤,结果的准确度越⾼。默认为10,000。当col字段中的distinct值的个数⼩于B时,结果为准确的百分位数。
之后后⾯可以输⼊多个百分位数,返回类型也为array,其中为对应的百分位数

pi

圆周率π

select pi();
>3.141592653589793

pmod

返回正的a除以b的余数,a,b可为int/double

select pmod(9,4);
>1

posexplode

对于a中每个元素,将生成一行且包含改元素,同时还返回各元素的行号,通常用来炸裂多列

positive

返回a

select  positive(-10);
>-10

pow

返回a的p次幂,举例:

select pow(2,4) ;
>  16.0

power

返回以 a 的 p 次幂,与 pow 功能相同

select power(2,4) ;
>  16.0

printf

按照printf风格格式输出字符串,示例:

select printf('abfhg');
>abfhg

quarter

返回当前时间属于哪个季度

select quarter('2015-04-08');
>2

radians

角度值转换成弧度值,返回a的弧度值

select radians(57.29577951308232);
>1.0

rand

返回一个0到1范围内的随机数。如果指定种子seed,则会返回固定的随机数,示例:

select rand();
>0.5577432776034763

rank

开窗排序函数,链接: 传送门

reflect

– 反射调用

select reflect("java.lang.Math","min",100,200);
>100

/*
reflect2
*/

regexp

如果字符串A或者字符串B为NULL,则返回NULL;如果字符串A符合JAVA正则表达式B的正则语法,则为TRUE;否则为FALSE。

select 'football' regexp '^footba';
>true;
select regexp('football', 'ba');
>true

regexp_extract

返回字符串subject与正则表达式pattern匹配后的index部分。例如:

select regexp_extract('100-300', '(d+)-(d+)', 2) 
>300

regexp_replace

将字符串subject与正则表达式pattern匹配上部分用REPLACEMENT进行替换并返回。例如:

select regexp_replace('100-200', '(d+)', 'num')
>'num-num'

repeat

将字符串str重复n次,示例:

select repeat('a',3);
>'aaa'

replace

替换字符串中指定的字符串,示例:

select replace('abcdefg','d','')
>'abcefg'

reverse

反转字符串,示例:

select reverse("abcedfg");
>gfdecba

rlike

rlike 相比于like 支持正则表达式,示例:

select 'foobar' rlike 'foo';
>true

round

返回指定精度d的double类型

 select round(3.1415926,4);
 > 3.1416

row_number

开窗排序函数,链接: 传送门

rpad

与lpad对应,将str截取长度len位,若str长度不足len则,右用pad补充。例如:

select rpad('abcdef', 5, 'a')
>'abcde'
select rpad('abc', 5, 'a')
>'abcaa'

rtrim

出去字符串右边的空格,示例:

select rtrim('abc   ');
>'abc'

second

返回日期中的秒

select second('2022-10-01 12:22:23');
>23

sentences

entences(string str, string lang, string locale)
将字符串str按照句子划分成单词。其中每个句子为一个数组,句子中单词为数组中元素。lang和locale为可选参数。其中lang为语言选项(如:'en’代表英文),locale代表地区。例子:

select sentences('Hello there! How are you?')
>( ('Hello', 'there'), ('How', 'are', 'you') )

sha

Hive1.3.0起,计算字符串或二进制的SHA-1摘要,并以十六进制字符串的形式返回。

sha1

Hive1.3.0起,计算字符串或二进制的SHA-1摘要,并以十六进制字符串的形式返回。

sha2

Hive1.3.0起,计算SHA-2系列哈希函数(SHA-224, SHA-256, SHA-384, and SHA-512)。第二个参数为结果的位数,只能是224、256(0)、384或512.java8+支持224。如果参数为null或位数不合法则返回null。

shiftleft

按位左移

select shiftleft(1,3)
>8

shiftright

按位右移

select shiftright(8,3)
>1

shiftrightunsigned

无符号按位右移动

select shiftrightunsigned(8,3)
>1

sign

如果a是整数则返回1.0,是负数则返回-1.0,否则返回0.0

select sign(-4);
>-1.0

sin

返回a的正弦值,示例:

select sin(0.8);
>0.7173560908995228

size

返回array类型的长度

select size(array('100','101','102','103'))
>4

sort_array

按照自然顺序对数组进行排序并返回

soundex

返回字符串的soundex代码。例如:

select soundex('Miller');
>M460

space

返回指定的空格个数

select space(3);
>'   '

split

按照正则表达式pat拆分字符串str。例如:

select  split('a,b,c,d',',');
>['a','b','c','d']

sqrt

返回a的平方根,示例

select sqrt(16);
>4

stack

stack(int n,k1,…)
n设为3,将后面6个元素按顺序分为3行2列

select stack(3,1,2,3,4,5,6);
col0	col1
1	     2
3	     4
5	     6

n设为3,将后面7个元素按顺序分为3行3列

select stack(3,1,2,3,4,5,6,7);
col0	col1	col2
1	     2	      3
4	     5	      6
7	   NULL	    NULL

std

std函数计算一组数据的样本标准差,用于估计整个数据集的标准差。它基于一组样本数据,将每个数据点与数据集的平均值之差的平方求和,然后除以样本数量减一,最后取平方根。

stddev

stddev函数计算一组数据的总体标准差,用于准确估计整个数据集的标准差。它与std函数类似,但是将每个数据点与数据集的平均值之差的平方求和后直接取平方根,

stddev_pop

该函数计算总体标准偏离,并返回总体变量的平⽅根,其返回值与VAR_POP函数的平⽅根相同(求指定列数值的标准偏差)

stddev_samp

该函数计算样本标准偏离,(求指定列数值的样本标准偏差)

str_to_map

将text分割为数个键值对。其中delimiter1和delimiter2为可选参数。delimiter1(默认为’:’)代表键k与值v的分隔符。delimiter2(默认为’,’)代表键值对k-v之间的分隔符。例如:

select str_to_map('column1:1,column2:2'},':',',')
>{'column1':'1','column2':'2'}

struct

使用给定的表达式,构造一个 struct 数据结构

substr

返回字符串A从start位置到结尾的字符串,举例:

select substr('abcde',3);
> cde

substring

返回字符串A从start位置开始,长度为len的字符串

举例:

 hive> select substr('abcde',3,2);
 cd

substring_index

截取第count分隔符之前的字符串,如count为正则从左边开始截取,如果为负则从右边开始截取

select substring_index('a,b,c',',',1);
>a

sum

聚合累加函数,示例

select sum(a) from (select 1 union all select 2) t
>3

tan

返回a的反正切值,示例:

select tan(0.8);
>1.0296385570503641

to_date

将标准格式时间戳转成日期格式,实例:

select to_date('2022-06-21 13:21:13') from dual;
>'2022-06-21'

to_unix_timestamp

unix时间戳timestamp转成当前时区时间格式format,示例:

select from_unixtime(1123240993,'yyyy-MM-dd HH:mm:ss') from dual;
> 2005-08-05 19:23:13

to_utc_timestamp

如果给定的时间戳指定的时区下时间戳,则将其转化成UTC下的时间戳

select to_utc_timestamp('1970-01-01 08:00:00','PST');
>1970-01-01 00:00:00

translate

translate(string|char|varchar input, string|char|varchar from, string|char|varchar to)
将input字符串中出现在from中的每个字符替换为to中的相应字符以后的字符串。 若from比to字符串长,那么在from中比to中多出的字符将会被删除。与PostgreSQL中对应函数等价。例如:

select translate('abcdefga','abc','wo')
>'wodefgw'

trim

去除左右空格

select trim('   abc  ')
>'abc'

trunc

返回时间的最开始的年份或月份,示例:

select trunc('2016-6-26','MM');
>2016-06-01
select trunc('2016-6-26','YY');
>2016-01-01

ucase

将字符串转换成大写字母。示例:

select ucase('abc');
>ABC

unbase64

解码base64,示例:

select unbase64('YWJjOjEyMw==');
>abc:123

unhex

返回十六进制字符串代码的字符串,hex的逆方法,示例:

select unhex('616263');
>'abc'

unix_timestamp

获取当前时区的unix时间戳,示例

select unix_

upper

将小写转大写,示例

select upper('a')
>A

uuid

生成随机字符串函数,示例:

select uuid();
>42bd1f4d-b0a6-4b48-a5dc-6142ffab5ba1

var_pop

统计结果集中非空集合的总体变量(忽略null)

var_samp

统计结果集中非空集合的样本变量(忽略null)

variance

返回组内查询列的方差(也可称为总体方差),也可写成var_pop(col)

version

查看hive的版本

select version();

weekofyear

返回日期在当年的周数

select weekofyear('2019-06-21 12:11:22') from dual;
>25

when

条件判断,示例:

select case 1 when 1 then 'a' else 'b' end from dul;
>'a'

windowingtablefunction

所有开窗函数的基础

xpath

返回一个 Hive 字符串数组,UDF 与模式无关 - 不执行 XML 验证。 但是,格式错误的 xml(例如,1)将导致抛出运行时异常。

select xpath('b1b2','a/*/text()');
>[b1","b2]
select xpath('b1b2','//@id')
>['foo', 'bar']
SELECT xpath ('b1b2b3c1 c2', 'a/*[@class="bb"]/text()');
>[b1","c1]

xpath_boolean

如果 XPath 表达式的计算结果为 true,或者找到匹配的节点,则返回 true。

SELECT xpath_boolean ('b', 'a/b = "b"')
>true
SELECT xpath_boolean ('b', 'a/b')
>true

xpath_int/xpath_long/xpath_short/xpath_number/xpath_float/xpath_double

这些函数返回一个整数数值,如果没有找到匹配项,或者找到匹配项但该值不是数字,则返回零值。支持数学运算。如果值溢出返回类型,则返回该类型的最大值.

SELECT xpath_int ('124 8', 'sum(a/*)')
>15
 SELECT xpath_int ('124 8', 'sum(a/b)')
>7
 SELECT xpath_int ('124 8', 'sum(a/b[@class="odd"])')
>5
SELECT xpath_double ('200000000040000000000', 'a/b * a/c')
>8.0E19
SELECT xpath_double ('这不是一个数字', 'a')
>NaN

xpath_string

path_string() 函数返回第一个匹配节点的文本。

SELECT xpath_string ('bbcc', 'a/b') #获取节点“a/b”的文本:
>bb
SELECT xpath_string ('bbcc', 'a')#获取节点“a”的文本。因为 'a' 有带有文本的子节点,所以结果是来自子节点的文本的组合。
>bbcc
 SELECT xpath_string ('b1b2', '//b')#获取匹配 '//b' 的第一个节点的文本
>b1
SELECT xpath_string ('b1b2', 'a/b[2]');#获取第二个匹配节点
>b2
SELECT xpath_string ('b1b2', 'a/b[@id="b_2"]');#从第一个具有属性 'id' 和值 'b_2' 的节点获取文本:
>b2

year

计算日期的年份,实例:

select year(2022-11-01) 
>2022

|

逻辑运算符,实例:

select 1=1|2=1
>false

~

你可能感兴趣的:(hive)