目录

一、数学函数

二、聚合函数

三、表生成函数

四、字符串函数

五、日期时间函数

六、类型转换函数

七、条件函数

八、数据屏蔽功能函数


翻译自Hive官网函数,标红的函数是本人认为比较常用的,供大家参考。

一、数学函数

返回类型

姓名(签名)

描述

DOUBLE round(DOUBLE a)

返回的舍入BIGINTa

DOUBLE round(DOUBLE a, INT d)

返回a四舍五入到d小数位。

DOUBLE bround(DOUBLE a) 返回a使用HALF_EVEN舍入模式的舍入后的BIGINT值(从Hive 1.3.0,2.0.0开始)。也称为高斯舍入或银行家舍入。例如:bround(2.5)= 2,bround(3.5)= 4。
DOUBLE bround(DOUBLE a, INT d) 使用HALF_EVEN舍入模式返回a舍入到d小数位(从Hive 1.3.0,2.0.0开始)。例如:bround(8.25,1)= 8.2,bround(8.35,1)= 8.4。
BIGINT floor(DOUBLE a)

返回BIGINT等于或小于的最大值a

BIGINT ceil(DOUBLE a), ceiling(DOUBLE a)

返回等于或大于的最小BIGINT值a

DOUBLE rand(), rand(INT seed)

返回从0到1均匀分布的随机数(逐行变化)。指定种子将确保所生成的随机数序列具有确定性。

DOUBLE exp(DOUBLE a), exp(DECIMAL a)

返回这里是自然对数的底数。Hive 0.13.0中添加了十进制版本。eae

DOUBLE ln(DOUBLE a), ln(DECIMAL a)

返回参数的自然对数a。Hive 0.13.0中添加了十进制版本。

DOUBLE

log10(DOUBLE a), log10(DECIMAL a)

返回参数的以10为底的对数a。Hive 0.13.0中添加了十进制版本。

DOUBLE

log2(DOUBLE a), log2(DECIMAL a)

返回参数的以2为底的对数a。Hive 0.13.0中添加了十进制版本。

DOUBLE

log(DOUBLE base, DOUBLE a)

log(DECIMAL base, DECIMAL a)

返回base参数的底数对数a。Hive 0.13.0中添加了十进制版本。

DOUBLE

pow(DOUBLE a, DOUBLE p), power(DOUBLE a, DOUBLE p)

返回 ap

DOUBLE sqrt(DOUBLE a), sqrt(DECIMAL a)

返回的平方根a。Hive 0.13.0中添加了十进制版本。

STRING

bin(BIGINT a)

以二进制格式返回数字(请参见MySQL :: MySQL 8.0 Reference Manual :: 12.8 String Functions and Operators)。

STRING

hex(BIGINT a) hex(STRING a) hex(BINARY a)

如果参数是INTor binaryhex则以STRING十六进制格式返回数字。否则,如果数字为a STRING,它将每个字符转换为十六进制表示形式并返回结果STRING。(见MySQL :: MySQL 8.0 Reference Manual :: 12.8 String Functions and Operators,BINARY版本蜂巢0.12.0)。

BINARY

unhex(STRING a)

十六进制的倒数。将每对字符解释为十六进制数字,并转换为数字的字节表示形式。(BINARYHive 0.12.0以后的版本,用于返回字符串。)

STRING

conv(BIGINT num, INT from_base, INT to_base), conv(STRING num, INT from_base, INT to_base)

将数字从给定的基数转换为另一个(请参见MySQL :: MySQL 8.0 Reference Manual :: 12.6.2 Mathematical Functions)。

DOUBLE

abs(DOUBLE a)

返回绝对值。

INT or DOUBLE

pmod(INT a, INT b), pmod(DOUBLE a, DOUBLE b)

返回的正值a mod b

DOUBLE

sin(DOUBLE a), sin(DECIMAL a)

返回aa以弧度为单位)的正弦值。Hive 0.13.0中添加了十进制版本。

DOUBLE

asin(DOUBLE a), asin(DECIMAL a)

返回a-1 <= a <= 1的反正弦值,否则返回NULL 。Hive 0.13.0中添加了十进制版本。

DOUBLE

cos(DOUBLE a), cos(DECIMAL a)

返回aa以弧度为单位)的余弦值。Hive 0.13.0中添加了十进制版本。

DOUBLE

acos(DOUBLE a), acos(DECIMAL a)

返回a-1 <= a <= 1 的反余弦值,否则返回NULL 。Hive 0.13.0中添加了十进制版本。

DOUBLE

tan(DOUBLE a), tan(DECIMAL a)

返回aa以弧度为单位)的切线。Hive 0.13.0中添加了十进制版本。

DOUBLE

atan(DOUBLE a), atan(DECIMAL a)

返回的反正切值a。Hive 0.13.0中添加了十进制版本。

DOUBLE

degrees(DOUBLE a), degrees(DECIMAL a)

将的值a从弧度转换为度。Hive 0.13.0中添加了十进制版本。

DOUBLE

radians(DOUBLE a), radians(DOUBLE a)

将值a从度转换为弧度。Hive 0.13.0中添加了十进制版本。

INT or DOUBLE

positive(INT a), positive(DOUBLE a)

返回a

INT or DOUBLE

negative(INT a), negative(DOUBLE a)

返回-a

DOUBLE or INT

sign(DOUBLE a), sign(DECIMAL a)

返回符号a“ 1.0”(如果a为正)或“ -1.0”(如果a为负),否则返回“ 0.0”。十进制版本返回INT而不是DOUBLE。Hive 0.13.0中添加了十进制版本。

DOUBLE

e()

返回的值e

DOUBLE

pi()

返回的值pi

BIGINT factorial(INT a) 返回a (从Hive 1.2.0开始)的阶乘。有效a值为[0..20]。
DOUBLE cbrt(DOUBLE a) 返回adouble值的多维数据集根(从Hive 1.2.0开始)。

INT

BIGINT

shiftleft(TINYINT|SMALLINT|INT a, INT b)

shiftleft(BIGINT a, INT b)

按位左移(从Hive 1.2.0开始)。a b向左移动位置。

为tinyint,smallint和int返回int a。为bigint返回bigint a

INT

BIGINT

shiftright(TINYINT|SMALLINT|INT a, INT b)

shiftright(BIGINT a, INT b)

按位右移(从Hive 1.2.0开始)。a b向右移动位置。

为tinyint,smallint和int返回int a。为bigint返回bigint a

INT

BIGINT

shiftrightunsigned(TINYINT|SMALLINT|INTa, INT b),

shiftrightunsigned(BIGINT a, INT b)

按位无符号右移(从Hive 1.2.0开始)。向右移动位置。a b

为tinyint,smallint和int返回int a。为bigint返回bigint a

T greatest(T v1, T v2, ...) 返回值列表的最大值(从Hive 1.1.0开始)。修复了当一个或多个参数为NULL且放宽了严格的类型限制(与“>”运算符一致时,从Hive 2.0.0开始)时返回NULL的问题。
T least(T v1, T v2, ...) 返回值列表中的最小值(从Hive 1.1.0开始)。修复了当一个或多个参数为NULL并且放宽了严格的类型限制(与Hive 2.0.0相同)时返回严格的类型限制的问题。
INT width_bucket(NUMERIC expr, NUMERIC min_value, NUMERIC max_value, INT num_buckets)

通过将expr映射到第i个大小相等的存储桶中,返回0到num_buckets + 1之间的整数。通过将[min_value,max_value]分成大小相等的区域来制作存储桶。如果expr <min_value,则返回1,如果expr> max_value,则返回num_buckets + 1。请参阅https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions214.htm (自Hive 3.0.0起)

二、聚合函数

返回类型

函数名

描述

BIGINT count(*) 计算总行数,包括含有NULL值的行。
BIGINT count(expr) 计算expr表达式非NULL的行的数量

BIGINT

count(DISTINCT expr[, expr_.])

计算expr表达式去重后且非NULL的行的数量

DOUBLE sum(col) 对组内某列求和(包含重复值,NULL值不影响)

DOUBLE

sum(DISTINCT col)

对组内某列求和(不包含重复值,先去重后求和,不含NULL)

DOUBLE avg(col) 对组内某列元素求平均值(包含重复值,不含NULL)

DOUBLE

avg(DISTINCT col)

对组内某列元素求平均值(包含重复值,不含NULL)

DOUBLE

min(col)

返回组内某列的最小值

DOUBLE

max(col)

返回组内某列的最大值

DOUBLE

variance(col),

var_pop(col)

返回组内某个数字列的方差

DOUBLE

var_samp(col)

返回组内某个数字列的无偏样本方差

DOUBLE

stddev_pop(col)

返回组内某个数字列的标准差

DOUBLE

stddev_samp(col)

返回组内某个数字列的无偏样本标准差

DOUBLE

covar_pop(col1, col2)

返回组内两个数字列的总体协方差

DOUBLE

covar_samp(col1, col2)

返回组内两个数字列的样本协方差

DOUBLE

corr(col1, col2)

返回组内两个数字列的皮尔逊相关系数

DOUBLE

percentile(BIGINT col, p)

返回组内某个列精确的第p位百分数,p必须在0和1之间

array<double>

percentile(BIGINT col, array(p1 [, p2]...))

返回组内某个列精确的第p1,p2,……位百分数,p必须在0和1之间

DOUBLE

percentile_approx(DOUBLE col, p [, B])

返回组内数字列近似的第p位百分数(包括浮点数),参数B控制近似的精确度,B值越大,近似度越高,默认值为10000。当列中非重复值的数量小于B时,返回精确的百分数

array<double>

percentile_approx(DOUBLE col, array(p1 [, p2]...) [, B])

同上,但接受并返回百分数数组

array<struct {'x','y'}>

histogram_numeric(col, b)

使用b个非均匀间隔的箱子计算组内数字列的柱状图(直方图),输出的数组大小为b,double类型的(x,y)表示直方图的中心和高度

array

collect_set(col)

返回去除重复元素的数组

array

collect_list(col)

返回允许重复元素的数组

INTEGER

ntile(INTEGER x)

该函数将已经排序的分区分到x个桶中,并为每行分配一个桶号。这可以容易的计算三分位,四分位,十分位,百分位和其它通用的概要统计

三、表生成函数

正常的用户定义函数,如concat,输入一个单行然后输出一个单行,但table-generating函数将一个单输入行转换为多个输出行。下表为Hive内置的table-generating函数。

返回类型

函数名

描述

N rows

explode(ARRAY)

参数列为数组类型,将数组数据中的每个元素做为一行返回

N rows

explode(MAP)

将输入map中的每个键值对转换为两列,一列为key,另一列为value,然后返回新行

inline(ARRAY<STRUCT[,STRUCT]>)

分解struct数组到表中

Array Type

explode(array<TYPE> a)

对于数组a中的每个元素,该函数产生包含该元素的行

元组

json_tuple(jsonStr, k1, k2, ...)

参数为一组键k1,k2……和JSON字符串,返回值的元组。该方法比 get_json_object 高效,因为可以在一次调用中输入多个键

元组

parse_url_tuple(url, p1, p2, ...)

该方法同parse_url() 相似,但可以一次性提取URL的多个部分,有效的参数名称为: HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE, USERINFO, QUERY:<KEY>

N rows

posexplode(ARRAY)

行为与参数为数组的explode方法相似,但包含项在原始数组中的位置,返回(pos,value)的二元组

N rows

stack(INT n, v_1, v_2, ..., v_k)

将v_1, ..., v_k 分为n行,每行包含k/n列,n必须为常数

四、字符串函数

返回类型 函数名 描述
int ascii(string str) 返回str第一个字符串的数值
string base64(binary bin) 将二进制参数转换为base64字符串
string concat(string|binary A, string|binary B...) 返回将A和B按顺序连接在一起的字符串,如:concat('foo', 'bar') 返回'foobar'
string concat_ws(string SEP, string A, string B,...) 类似concat() ,但使用自定义的分隔符SEP
string concat_ws(string SEP, array<string>) 类似concat_ws() ,但参数为字符串数组
array<struct<string,double>> context_ngrams(array<array<string>>, array<string>, int K, int pf) 从一组标记化的句子中返回前k个文本
string decode(binary bin, string charset) 使用指定的字符集将第一个参数解码为字符串,如果任何一个参数为null,返回null。可选字符集为: 'US_ASCII', 'ISO-8859-1', 'UTF-8', 'UTF-16BE', 'UTF-16LE', 'UTF-16'
binary encode(string src, string charset) 使用指定的字符集将第一个参数编码为binary ,如果任一参数为null,返回null
int find_in_set(string str, string strList)

返回在以逗号分隔的字符串中,str第一次出现的位置。

如果str包含逗号则返回0,若任何参数为null,返回null。如: find_in_set('ab', 'abc,b,ab,c,def') 返回3

string format_number(number x, int d) 将数字x格式化为'#,###,###.##',四舍五入为d位小数位,将结果做为字符串返回。如果d=0,结果不包含小数点或小数部分
string get_json_object(string json_string, string path) 从基于json path的json字符串中提取json对象,返回json对象的json字符串,如果输入的json字符串无效返回null。Json 路径只能有数字、字母和下划线,不允许大写和其它特殊字符
boolean in_file(string str, string filename) 如果str在filename中以正行的方式出现,返回true
int instr(string str, string substr) 返回substr在str中第一次出现的位置。若任何参数为null返回null,若substr不在str中返回0。Str中第一个字符的位置为1
int length(string A) 返回A的长度
int locate(string substr, string str[, int pos]) 返回substr在str的位置pos后第一次出现的位置
string lower(string A) lcase(string A) 返回字符串的小写形式
string upper(string A) ucase(string A) 返回字符串A的大写形式
string lpad(string str, int len, string pad) 将str左侧用字符串pad填充,长度为len
string ltrim(string A) 去掉字符串A左侧的空格,如:ltrim(' foobar ')的结果为'foobar '
array<struct<string,double>> ngrams(array<array<string>>, int N, int K, int pf) 从一组标记化的Returns the top-k 句子中返回前K个N-grams
string parse_url(string urlString, string partToExtract [, string keyToExtract]) 返回给定URL的指定部分,partToExtract的有效值包括HOST,PATH, QUERY, REF, PROTOCOL, AUTHORITY,FILE和USERINFO。例如:  parse_url('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1', 'HOST') 返回 'facebook.com'.。当第二个参数为QUERY时,可以使用第三个参数提取特定参数的值,例如: parse_url('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1',
'QUERY', 'k1') 返回'v1'
string printf(String format, Obj... args) 将输入参数进行格式化输出
string regexp_extract(string subject, string pattern, int index) 使用pattern从给定字符串中提取字符串。如: regexp_extract('foothebar', 'foo(.*?)(bar)', 2) 返回'bar' 有时需要使用预定义的字符类:使用'\s' 做为第二个参数将匹配s,'s'匹配空格等。参数index是Java正则匹配器方法group()方法中的索引
string regexp_replace(string INITIAL_STRING, string PATTERN, string REPLACEMENT) 使用REPLACEMENT替换字符串INITIAL_STRING中匹配PATTERN的子串,例如: regexp_replace("foobar", "oo|ar", "") 返回'fb'
string repeat(string str, int n) 将str重复n次
string reverse(string A) 将字符串A翻转
string rpad(string str, int len, string pad) 在str的右侧使用pad填充至长度len
string rtrim(string A) 去掉字符串A右侧的空格,如: rtrim(' foobar ') 返回 ' foobar'
array<array<string>> sentences(string str, string lang, string locale) 将自然语言文本处理为单词和句子,每个句子在适当的边界分割,返回单词的数组。参数lang和local为可选参数,例如: sentences('Hello there! How are you?') 返回( ("Hello", "there"), ("How", "are", "you") )
string space(int n) 返回n个空格的字符串
array split(string str, string pat) 用pat分割字符串str,pat为正则表达式
map<string,string> str_to_map(text[, delimiter1, delimiter2]) 使用两个分隔符将文本分割为键值对。第一个分隔符将文本分割为K-V 对,第二个分隔符分隔每个K-V 对。默认第一个分隔符为““,第二个分隔符为=
string substr(string|binary A, int start) substring(string|binary A, int start) 返回A从位置start直到结尾的子串
string substr(string|binary A, int start, int len) substring(string|binary A, int start, int len) 返回A中从位置start开始,长度为len的子串,如: substr('foobar', 4, 1) 返回 'b'
string translate(string input, string from, string to) 将input中出现在from中的字符替换为to中的字符串,如果任何参数为null,结果为null
string trim(string A) 去掉字符串A两端的空格
binary unbase64(string str) 将base64字符串转换为二进制

五、日期时间函数

返回类型

姓名(签名)

描述

string

from_unixtime(bigint unixtime[, string format])

将unix纪元(1970-01-01 00:00:00 UTC)的秒数转换为一个字符串,该字符串表示当前系统时区中该时刻的时间戳,格式为“ 1970-01-01 00:00: 00”。

bigint

unix_timestamp()

以秒为单位获取当前的Unix时间戳。此函数不是确定性的,其值在查询执行范围内也不是固定的,因此会阻止对查询的适当优化-自2.0版以来已弃用此函数,而推荐使用CURRENT_TIMESTAMP常量。

bigint

unix_timestamp(string date)

yyyy-MM-dd HH:mm:ss使用默认时区和默认语言环境将时间字符串格式转换为Unix时间戳(以秒为单位),如果失败,则返回0:unix_timestamp('2009-03-20 11:30:01')= 1237573801

bigint

unix_timestamp(string date, string pattern)

将具有给定模式的时间字符串(请参阅[ http://docs.oracle.com/javase/tutorial/i18n/format/simpleDateFormat.html])转换为Unix时间戳(以秒为单位),如果失败,则返回0:unix_timestamp('2009 -03-20','yyyy-MM-dd')= 1237532400。

pre 2.1.0: string

2.1.0 on: date

to_date(string timestamp)

返回时间戳字符串(Hive 2.1.0之前)的日期部分:to_date(“ 1970-01-01 00:00:00”)=“ 1970-01-01”。从Hive 2.1.0开始,返回日期对象。

在Hive 2.1.0(HIVE-13248)之前,返回类型为String,因为创建方法时不存在Date类型。

int

year(string date)

返回日期或时间戳字符串的年份部分:year(“ 1970-01-01 00:00:00”)= 1970,year(“ 1970-01-01”)= 1970。

int

quarter(date/timestamp/string) 返回日期,时间戳或范围在1到4之间的字符串的一年的四分之一(从Hive 1.3.0开始)。示例:quarter('2015-04-08')= 2。 

int

month(string date)

返回日期或时间戳字符串的月份部分:month(“ 1970-11-01 00:00:00”)= 11,month(“ 1970-11-01”)= 11。

int

day(string date) dayofmonth(date)

返回日期或时间戳字符串的日期部分:day(“ 1970-11-01 00:00:00”)= 1,day(“ 1970-11-01”)= 1。

int

hour(string date)

返回时间戳的小时:hour('2009-07-30 12:58:59')= 12,hour('12:58:59')= 12。

int

minute(string date)

返回时间戳的分钟。

int

second(string date)

返回时间戳的秒数。

int

weekofyear(string date)

返回时间戳字符串的星期数:weekofyear(“ 1970-11-01 00:00:00”)= 44,weekofyear(“ 1970-11-01”)= 44。

int

extract(field FROM source)

从源中检索字段,例如天或小时(从Hive 2.2.0开始)。源必须是日期,时间戳,时间间隔或可以转换为日期或时间戳的字符串。支持的字段包括:日,星期几,小时,分钟,月,季度,秒,周和年。

例子:

  1. select extract(month from "2016-10-20") results in 10.

  2. select extract(hour from "2016-10-20 05:06:07") results in 5.

  3. select extract(dayofweek from "2016-10-20 05:06:07") results in 5.

  4. select extract(month from interval '1-3' year to month) results in 3.

  5. select extract(minute from interval '3 12:20:30' day to second) results in 20.

int

datediff(string enddate, string startdate)

返回从开始日期到结束日期的天数:datediff('2009-03-01','2009-02-27')= 2。

pre 2.1.0: string

2.1.0 on: date

date_add(date/timestamp/string startdate, tinyint/smallint/int days)

添加开始日期的天数:date_add('2008-12-31',1)='2009-01-01'。

在Hive 2.1.0(HIVE-13248)之前,返回类型为String,因为创建方法时不存在Date类型。

pre 2.1.0: string

2.1.0 on: date

date_sub(date/timestamp/string startdate, tinyint/smallint/int days)

减去开始日期的天数:date_sub('2008-12-31',1)='2008-12-30'。

在Hive 2.1.0(HIVE-13248)之前,返回类型为String,因为创建方法时不存在Date类型。

timestamp

from_utc_timestamp({undefinedany primitive type} ts, string timezone)

将UTC中的timestamp *转换为给定的时区(从Hive 0.8.0开始)。

* 时间戳是一种原始类型,包括时间戳/日期,tinyint / smallint / int / bigint,float / double和十进制。

小数部分被视为秒。整数值以毫秒为单位。例如,from_utc_timestamp (2592000.0,'PST'),from_utc_timestamp (2592000000,'PST')和from_utc_timestamp (timestamp'1970-01-30 16:00:00','PST')都返回时间戳1970-01-30 08:00:00。

timestamp

to_utc_timestamp({undefinedany primitive type} ts, string timezone)

将给定时区中的时间戳*转换为UTC(从Hive 0.8.0开始)。

* 时间戳是一种原始类型,包括时间戳/日期,tinyint / smallint / int / bigint,float / double和十进制。

小数部分被视为秒。整数值以毫秒为单位。例如,to_utc_timestamp(2592000.0,'PST'),to_utc_timestamp(2592000000,'PST')和to_utc_timestamp(timestamp'1970-01-30 16:00:00','PST')都返回时间戳1970-01-31 00:00:00。

date current_date

返回查询评估开始时的当前日期(从Hive 1.2.0开始)。同一查询中对current_date的所有调用均返回相同的值。

timestamp current_timestamp

返回查询评估开始时的当前时间戳(从Hive 1.2.0开始)。同一查询中对current_timestamp的所有调用均返回相同的值。

string add_months(string start_date, int num_months, output_date_format)

返回起始日期之后num_months的日期(从Hive 1.1.0开始)。start_date是字符串,日期或时间戳。num_months是一个整数。如果start_date是该月的最后一天,或者如果结果月份的天数少于start_date的天部分,则结果是结果月份的最后一天。否则,结果与start_date具有相同的日组成部分。默认输出格式为“ yyyy-MM-dd”。

在Hive 4.0.0之前,日期的时间部分将被忽略。

从Hive 4.0.0开始,add_months支持可选参数output_date_format,该参数接受一个String,该String表示输出的有效日期格式。这样可以在输出中保留时间格式。

例如 :

add_months('2009-08-31',1)返回'2009-09-30'。
add_months('2017-12-31 14:15:16',2,'YYYY-MM-dd HH:mm:ss')返回'2018-02-28 14:15:16'。

string last_day(string date) 返回日期所属月份的最后一天(从Hive 1.1.0开始)。date是格式为“ yyyy-MM-dd HH:mm:ss”或“ yyyy-MM-dd”的字符串。日期的时间部分将被忽略。
string next_day(string start_date, string day_of_week) 返回第一个日期,该日期晚于start_date,并命名为day_of_week (从Hive 1.2.0开始)。start_date是字符串/日期/时间戳。day_of_week是2个字母,3个字母或一周中某天的全名(例如Mo,tue,FRIDAY)。start_date的时间部分将被忽略。例如:next_day('2015-01-14','TU')= 2015-01-20。
string trunc(string date, string format) 返回截断为格式指定单位的日期(从Hive 1.2.0开始)。支持的格式:MONTH / MON / MM,YEAR / YYYY / YY。示例:trunc('2015-03-17','MM')= 2015-03-01。
double months_between(date1, date2) 返回日期date1和date2之间的月份数(从Hive 1.2.0开始)。如果date1晚于date2,则结果为正。如果date1早于date2,则结果为负。如果date1和date2是月份的同一天或月份的最后几天,则结果始终是整数。否则,UDF将基于31天的月份来计算结果的分数部分,并考虑时间分量date1和date2的差异。date1和date2类型可以是日期,时间戳或字符串,格式为“ yyyy-MM-dd”或“ yyyy-MM-dd HH:mm:ss”。结果四舍五入到小数点后8位。例如:months_between('1997-02-28 10:30:00','1996-10-30')= 3.94959677 
string date_format(date/timestamp/string ts, string fmt)

将日期/时间戳记/字符串转换为日期格式fmt指定的格式的字符串值(从Hive 1.2.0开始)。支持的格式是Java SimpleDateFormat格式– https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html 。第二个参数fmt应该是常量。示例:date_format('2015-04-08','y')='2015'。

date_format可用于实现其他UDF,例如:

  • dayname(date)是date_format(date,'EEEE')
  • dayofyear(date)是date_format(date,'D')

六、类型转换函数

返回类型

姓名(签名)

描述

binary

binary(string|binary)

将参数转换为二进制。

Expected "=" to follow "type"

cast(expr as <type>)

将表达式expr的结果转换为<type>。例如,cast('1'as BIGINT)会将字符串'1'转换为其整数表示。如果转换不成功,则返回null。如果cast(expr为boolean),则Hive对于非空字符串返回true。

七、条件函数

返回类型

姓名(签名)

描述

T

if(boolean testCondition, T valueTrue, T valueFalseOrNull)

当testCondition为true时返回valueTrue,否则返回valueFalseOrNull。

boolean isnull( a ) 如果a为NULL,则返回true,否则返回false。
boolean isnotnull ( a ) 如果a不为NULL,则返回true,否则返回false。
T nvl(T value, T default_value) 如果value为null,则返回默认值,否则返回值(从HIve 0.11开始)。

T

COALESCE(T v1, T v2, ...)

返回第一个不为NULL的v,如果所有v均为NULL,则返回NULL。

T

CASE a WHEN b THEN c [WHEN d THEN e]* [ELSE f] END

当a = b时,返回c; 当a = d时,返回e; 否则返回f。

T

CASE WHEN a THEN b [WHEN c THEN d]* [ELSE e] END

当a = true时,返回b; 当c = true时,返回d; 否则返回e。

T nullif( a, b )

如果a = b,则返回NULL。否则返回a (从Hive 2.3.0开始)。

简写:CASE,当a = b时为NULL,否则为a

void assert_true(boolean condition) 如果'condition'不为true,则引发异常,否则返回null(从Hive 0.8.0开始)。例如,选择assert_true(2 <1)。

八、数据屏蔽功能函数

返回类型

姓名(签名)

描述

string

mask(string str[, string upper[, string lower[, string number]]])

返回str的掩码版本(从Hive 2.1.0开始)。默认情况下,大写字母转换为“ X”,小写字母转换为“ x”,数字转换为“ n”。例如mask(“ abcd-EFGH-8765-4321”)的结果为xxxx-XXXX-nnnn-nnnn。您可以通过提供其他参数来覆盖掩码中使用的字符:第二个参数控制大写字母的掩码字符,第三个参数控制小写字母的字符,第四个参数控制数字的字符。例如,mask(“ abcd-EFGH-8765-4321”,“ U”,“ l”,“#”)生成llll-UUUU-####-####。

string mask_first_n(string str[, int n]) 返回带有str的被屏蔽版本,其中前n个值被屏蔽(从Hive 2.1.0开始)。大写字母转换为“ X”,小写字母转换为“ x”,数字转换为“ n”。例如,mask_first_n(“ 1234-5678-8765-4321”,4)生成nnnn-5678-8765-4321。
string mask_last_n(string str[, int n]) 返回带有掩码的最后一个n值的str的掩码版本(从Hive 2.1.0开始)。大写字母转换为“ X”,小写字母转换为“ x”,数字转换为“ n”。例如,mask_last_n(“ 1234-5678-8765-4321”,4)生成1234-5678-8765-nnnn。
string mask_show_first_n(string str[, int n]) 返回带掩码的str版本,显示未掩码的前n个字符(从Hive 2.1.0开始)。大写字母转换为“ X”,小写字母转换为“ x”,数字转换为“ n”。例如,mask_show_first_n(“ 1234-5678-8765-4321”,4)的结果为1234-nnnn-nnnn-nnnn。
string mask_show_last_n(string str[, int n]) 返回str的掩码版本,显示未掩码的最后n个字符(从Hive 2.1.0开始)。大写字母转换为“ X”,小写字母转换为“ x”,数字转换为“ n”。例如,mask_show_last_n(“ 1234-5678-8765-4321”,4)的结果为nnnn-nnnn-nnnn-4321。
string mask_hash(string|char|varchar str) 返回基于str的哈希值(从Hive 2.1.0开始)。哈希是一致的,可用于将跨表的掩码值连接在一起。对于非字符串类型,此函数返回null。

九、其他功能函数

返回类型

姓名(签名)

描述

varies

java_method(class, method[, arg1[, arg2..]])

的同义词reflect。(从Hive 0.9.0开始。)

varies

reflect(class, method[, arg1[, arg2..]])

通过使用反射匹配参数签名来调用Java方法。(从Hive 0.7.0开始。)有关示例,请参见反射(通用)UDF。

int

hash(a1[, a2...])

返回参数的哈希值。(从Hive 0.4开始。)

string current_user() 从配置的身份验证器管理器(从Hive 1.2.0开始)返回当前用户名。可以与连接时提供的用户相同,但是与某些身份验证管理器(例如HadoopDefaultAuthenticator)不同。
string logged_in_user() 从会话状态返回当前的用户名(从Hive 2.2.0开始)。这是连接到Hive时提供的用户名。
string current_database() 返回当前数据库名称(从Hive 0.13.0开始)。
string md5(string/binary) 计算字符串或二进制文件的MD5 128位校验和(从Hive 1.3.0开始)。该值以32个十六进制数字的字符串形式返回,如果参数为NULL,则返回NULL。示例:md5('ABC')='902fbdd2b1df0c4f70b4a5d23525e932'。
string

sha1(string/binary)

sha(string/binary)

计算字符串或二进制文件的SHA-1摘要,并以十六进制字符串形式返回值(从Hive 1.3.0开始)。例如:sha1('ABC')='3c01bdbb26f358bab27f267924aa2c9a03fcfdb8'。
bigint crc32(string/binary) 计算字符串或二进制参数的循环冗余校验值,并返回bigint值(从Hive 1.3.0开始)。例如:crc32('ABC')= 2743272264。
string sha2(string/binary, int) 计算SHA-2系列哈希函数(SHA-224,SHA-256,SHA-384和SHA-512)(从Hive 1.3.0开始)。第一个参数是要哈希的字符串或二进制。第二个参数表示结果的所需位长度,该位长度必须具有224、256、384、512或0(等于256)的值。从Java 8开始支持SHA-224。如果任一参数为NULL或哈希长度不是允许的值之一,则返回值为NULL。例如:sha2('ABC',256)='b5d4045c3f466fa91fe2cc6abe79232a1a57cdf104f7a26e716e0a1e2789df78'。
binary aes_encrypt(input string/binary, key string/binary) 使用AES加密输入(自Hive 1.3.0起)。可以使用128、192或256位的密钥长度。如果安装了Java密码学扩展(JCE)无限强度管辖权策略文件,则可以使用192位和256位密钥。如果任一参数为NULL或密钥长度不是允许的值之一,则返回值为NULL。示例:base64(aes_encrypt('ABC','1234567890123456'))='y6Ss + zCYObpCbgfWfyNWTw =='。
binary aes_decrypt(input binary, key string/binary) 使用AES解密输入(自Hive 1.3.0起)。可以使用128、192或256位的密钥长度。如果安装了Java密码学扩展(JCE)无限强度管辖权策略文件,则可以使用192位和256位密钥。如果任一参数为NULL或密钥长度不是允许的值之一,则返回值为NULL。示例:aes_decrypt(unbase64('y6Ss + zCYObpCbgfWfyNWTw =='),'1234567890123456')='ABC'。
string version() 返回Hive版本(从Hive 2.1.0开始)。该字符串包含2个字段,第一个是内部版本号,第二个是内部散列。示例:“ select version();”可能会返回“ 2.1.0.2.5.0.0-1245 r027527b9c5ce1a3d7d0b6d2e6de2378fb0c39232”。实际结果将取决于您的构建。
bigint surrogate_key([write_id_bits, task_id_bits]) 在向表中输入数据时自动为行生成数字ID。只能用作酸表或仅插入表的默认值。

Hive 官网函数全列表(聚合函数/日期函数/字符串函数...)相关推荐

  1. R语言按组聚合求和实战(sum a variable by group):使用aggregate函数按组聚合求和、使用tapply函数按组聚合求和、按组聚合求和(使用dplyr包)

    R语言按组聚合求和实战(sum a variable by group):使用aggregate函数按组聚合求和.使用tapply函数按组聚合求和.按组聚合求和(使用dplyr包) 目录

  2. web报表工具FineReport常用函数的用法总结(日期和时间函数)

    web报表工具FineReport常用函数的用法总结(日期和时间函数) 说明:凡函数中以日期作为参数因子的,其中日期的形式都必须是yy/mm/dd.而且必须用英文环境下双引号(" " ...

  3. hive官网函数-中文说明文档

    关系运算符 以下运算符比较传递的操作数,并根据操作数之间的比较是否成立来生成TRUE或FALSE值. 操作员 操作数类型 描述 A = B 所有原始类型 如果表达式A等于表达式B,则为TRUE,否则为 ...

  4. vivo官网APP全机型UI适配方案

    vivo 互联网客户端团队- Xu Jie 日益新增的机型,给开发人员带来了很多的适配工作.代码能不能统一.apk能不能统一.物料如何选取.样式怎么展示等等都是困扰开发人员的问题,本方案就是介绍不同机 ...

  5. python如何创建函数对列表里的元素进行分类_zip()函数如何在python中遍历多个列表?...

    在对列表的元素进行找寻时,会频繁的说到遍历的理念.对于复杂的遍历要求,如多个列表中查找就显然不适合用for循环.本篇所要带来的是zip() 函数的方法,能够对多个迭代器进行遍历.下面我们就python ...

  6. hive 如何将数组转成字符串_Hive函数大全(含例子)之字符串函数(String Functions)...

    字符串函数 String Functions ascii(string str) 返回结果: 返回字符串str首字母的十进制ascii码返回类型: intselect ascii('ABC'); -- ...

  7. python编写字符串查找函数_Python 简明教程 --- 8,Python 字符串函数

    好代码本身就是最好的文档.当你需要添加一个注释时,你应该考虑如何修改代码才能不需要注释. -- Steve McConnell 目录 字符串有很多操作函数,所以,这里我们专门用一节来介绍这些函数. 建 ...

  8. (四)Excel函数应用之文本、日期和时间函数

    所谓文本函数,就是可以在公式中处理文字串的函数.例如,可以改变大小写或确定文字串的长度:可以替换某些字符或者去除某些字符等.而日期和时间函数则可以在公式中分析和处理日期值和时间值.关于这两类函数的列表 ...

  9. view函数_数据科学系列:数据处理(6)字符串函数基于R(二)

    承接R&Python Data Science系列:数据处理(5)--字符串函数基于R(一),继续介绍R语言中的字符串函数. 4.2 R语言中的正则表达式 正则表达式通过各种函数对字符串进行查 ...

  10. php字符串中删除字符串函数,PHP 实现删除任意区间内字符串函数方法

    PHP是一种通用开源脚本语言.语法吸收了C语言.Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域.下面简单讲述一下PHP实现删除任意字符串函数的方法,此函数涉及到php对字符串的 ...

最新文章

  1. Python --深入浅出Apriori关联分析算法(二) Apriori关联规则实战
  2. 用C#生成随机中文汉字验证码的基本原理
  3. jmeter中没有sampler_JMeter 接口自动化测试篇 29
  4. APK 本地化和去广告
  5. 《LeetCode力扣练习》第56题 合并区间 Java
  6. NTU 课程笔记:ERIC(3) 开展研究
  7. 区块链BaaS云服务(39)时戳信息Bystack“架构设计”
  8. DIV默认高度且自适应高度
  9. JwPlayer播放器【去除Logo、去除版本信息】
  10. 电大计算机专业毕业自我鉴定,电大毕业生计算机专业自我鉴定
  11. nginx.conf 配置完整示例
  12. 在Linux系统编译DCMTK的源码得到其动态库文件和可执行程序
  13. 针式打印机无电脑测试软件,针式打印机断针测试软件合集
  14. DIY_红外计数模块
  15. USACO 1359. 城堡(并查集)
  16. 计算机 人脑 发热 ppt,人脑即电脑,疯狂的大脑进化史,大脑科学的革命
  17. 自己捣鼓的小程序实现订单代付的功能
  18. Linux iptables 防火墙 添加删除 端口
  19. 计算机函数公式大全ppt,三角函数公式大全分解.ppt
  20. 获取android基带版本信息,android手机的基带怎么查看?

热门文章

  1. 青龙面板 抖音极速版
  2. 怎么 把计算机里的照片变成背景,用画图怎么改照片底色
  3. 不会讲故事,怎么带团队(用故事简化沟通,提升团队效率)--读后感
  4. CTF WEB WP杂谈
  5. 数据时代建设医疗数据,主要有哪些意义?
  6. 批量创建钱包地址并保存私钥
  7. 六类网线和超六类网线的区别
  8. 蛋白定量质谱(Label-free)
  9. java中的打印_java中使用打印的方法
  10. 计算机局域网和广域网的特点是什么,局域网和广域网的区别