Hive 官网函数全列表(聚合函数/日期函数/字符串函数...)
目录
一、数学函数
二、聚合函数
三、表生成函数
四、字符串函数
五、日期时间函数
六、类型转换函数
七、条件函数
八、数据屏蔽功能函数
翻译自Hive官网函数,标红的函数是本人认为比较常用的,供大家参考。
一、数学函数
返回类型 |
姓名(签名) |
描述 |
---|---|---|
DOUBLE | round(DOUBLE a) |
返回的舍入 |
DOUBLE | round(DOUBLE a, INT 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 | ceil(DOUBLE a), ceiling(DOUBLE a) |
返回等于或大于的最小BIGINT值 |
DOUBLE | rand(), rand(INT seed) |
返回从0到1均匀分布的随机数(逐行变化)。指定种子将确保所生成的随机数序列具有确定性。 |
DOUBLE | exp(DOUBLE a), exp(DECIMAL a) |
返回这里是自然对数的底数。Hive 0.13.0中添加了十进制版本。 |
DOUBLE | ln(DOUBLE a), ln(DECIMAL a) |
返回参数的自然对数 |
DOUBLE |
log10(DOUBLE a), log10(DECIMAL a) |
返回参数的以10为底的对数 |
DOUBLE |
log2(DOUBLE a), log2(DECIMAL a) |
返回参数的以2为底的对数 |
DOUBLE |
log(DOUBLE base, DOUBLE a) log(DECIMAL base, DECIMAL a) |
返回 |
DOUBLE |
pow(DOUBLE a, DOUBLE p), power(DOUBLE a, DOUBLE p) |
返回 |
DOUBLE | sqrt(DOUBLE a), sqrt(DECIMAL a) |
返回的平方根 |
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) |
如果参数是 |
BINARY |
unhex(STRING a) |
十六进制的倒数。将每对字符解释为十六进制数字,并转换为数字的字节表示形式。( |
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) |
返回的正值 |
DOUBLE |
sin(DOUBLE a), sin(DECIMAL a) |
返回 |
DOUBLE |
asin(DOUBLE a), asin(DECIMAL a) |
返回 |
DOUBLE |
cos(DOUBLE a), cos(DECIMAL a) |
返回 |
DOUBLE |
acos(DOUBLE a), acos(DECIMAL a) |
返回 |
DOUBLE |
tan(DOUBLE a), tan(DECIMAL a) |
返回 |
DOUBLE |
atan(DOUBLE a), atan(DECIMAL a) |
返回的反正切值 |
DOUBLE |
degrees(DOUBLE a), degrees(DECIMAL a) |
将的值 |
DOUBLE |
radians(DOUBLE a), radians(DOUBLE a) |
将值 |
INT or DOUBLE |
positive(INT a), positive(DOUBLE a) |
返回 |
INT or DOUBLE |
negative(INT a), negative(DOUBLE a) |
返回 |
DOUBLE or INT |
sign(DOUBLE a), sign(DECIMAL a) |
返回符号 |
DOUBLE |
e() |
返回的值 |
DOUBLE |
pi() |
返回的值 |
BIGINT | factorial(INT a) |
返回a (从Hive 1.2.0开始)的阶乘。有效a 值为[0..20]。
|
DOUBLE | cbrt(DOUBLE a) |
返回a double值的多维数据集根(从Hive 1.2.0开始)。
|
INT BIGINT |
shiftleft(TINYINT|SMALLINT|INT a, INT b) shiftleft(BIGINT a, INT b) |
按位左移(从Hive 1.2.0开始)。 为tinyint,smallint和int返回int |
INT BIGINT |
shiftright(TINYINT|SMALLINT|INT a, INT b) shiftright(BIGINT a, INT b) |
按位右移(从Hive 1.2.0开始)。 为tinyint,smallint和int返回int |
INT BIGINT |
shiftrightunsigned(TINYINT|SMALLINT|INTa, INT b), shiftrightunsigned(BIGINT a, INT b) |
按位无符号右移(从Hive 1.2.0开始)。向右移动位置。 为tinyint,smallint和int返回int |
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字符串,返回值的元组。该方法比 |
元组 |
parse_url_tuple(url, p1, p2, ...) |
该方法同 |
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) |
|
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开始)。源必须是日期,时间戳,时间间隔或可以转换为日期或时间戳的字符串。支持的字段包括:日,星期几,小时,分钟,月,季度,秒,周和年。 例子:
|
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'。 |
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,例如:
|
六、类型转换函数
返回类型 |
姓名(签名) |
描述 |
---|---|---|
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..]]) |
的同义词 |
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 官网函数全列表(聚合函数/日期函数/字符串函数...)相关推荐
- R语言按组聚合求和实战(sum a variable by group):使用aggregate函数按组聚合求和、使用tapply函数按组聚合求和、按组聚合求和(使用dplyr包)
R语言按组聚合求和实战(sum a variable by group):使用aggregate函数按组聚合求和.使用tapply函数按组聚合求和.按组聚合求和(使用dplyr包) 目录
- web报表工具FineReport常用函数的用法总结(日期和时间函数)
web报表工具FineReport常用函数的用法总结(日期和时间函数) 说明:凡函数中以日期作为参数因子的,其中日期的形式都必须是yy/mm/dd.而且必须用英文环境下双引号(" " ...
- hive官网函数-中文说明文档
关系运算符 以下运算符比较传递的操作数,并根据操作数之间的比较是否成立来生成TRUE或FALSE值. 操作员 操作数类型 描述 A = B 所有原始类型 如果表达式A等于表达式B,则为TRUE,否则为 ...
- vivo官网APP全机型UI适配方案
vivo 互联网客户端团队- Xu Jie 日益新增的机型,给开发人员带来了很多的适配工作.代码能不能统一.apk能不能统一.物料如何选取.样式怎么展示等等都是困扰开发人员的问题,本方案就是介绍不同机 ...
- python如何创建函数对列表里的元素进行分类_zip()函数如何在python中遍历多个列表?...
在对列表的元素进行找寻时,会频繁的说到遍历的理念.对于复杂的遍历要求,如多个列表中查找就显然不适合用for循环.本篇所要带来的是zip() 函数的方法,能够对多个迭代器进行遍历.下面我们就python ...
- hive 如何将数组转成字符串_Hive函数大全(含例子)之字符串函数(String Functions)...
字符串函数 String Functions ascii(string str) 返回结果: 返回字符串str首字母的十进制ascii码返回类型: intselect ascii('ABC'); -- ...
- python编写字符串查找函数_Python 简明教程 --- 8,Python 字符串函数
好代码本身就是最好的文档.当你需要添加一个注释时,你应该考虑如何修改代码才能不需要注释. -- Steve McConnell 目录 字符串有很多操作函数,所以,这里我们专门用一节来介绍这些函数. 建 ...
- (四)Excel函数应用之文本、日期和时间函数
所谓文本函数,就是可以在公式中处理文字串的函数.例如,可以改变大小写或确定文字串的长度:可以替换某些字符或者去除某些字符等.而日期和时间函数则可以在公式中分析和处理日期值和时间值.关于这两类函数的列表 ...
- view函数_数据科学系列:数据处理(6)字符串函数基于R(二)
承接R&Python Data Science系列:数据处理(5)--字符串函数基于R(一),继续介绍R语言中的字符串函数. 4.2 R语言中的正则表达式 正则表达式通过各种函数对字符串进行查 ...
- php字符串中删除字符串函数,PHP 实现删除任意区间内字符串函数方法
PHP是一种通用开源脚本语言.语法吸收了C语言.Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域.下面简单讲述一下PHP实现删除任意字符串函数的方法,此函数涉及到php对字符串的 ...
最新文章
- Python --深入浅出Apriori关联分析算法(二) Apriori关联规则实战
- 用C#生成随机中文汉字验证码的基本原理
- jmeter中没有sampler_JMeter 接口自动化测试篇 29
- APK 本地化和去广告
- 《LeetCode力扣练习》第56题 合并区间 Java
- NTU 课程笔记:ERIC(3) 开展研究
- 区块链BaaS云服务(39)时戳信息Bystack“架构设计”
- DIV默认高度且自适应高度
- JwPlayer播放器【去除Logo、去除版本信息】
- 电大计算机专业毕业自我鉴定,电大毕业生计算机专业自我鉴定
- nginx.conf 配置完整示例
- 在Linux系统编译DCMTK的源码得到其动态库文件和可执行程序
- 针式打印机无电脑测试软件,针式打印机断针测试软件合集
- DIY_红外计数模块
- USACO 1359. 城堡(并查集)
- 计算机 人脑 发热 ppt,人脑即电脑,疯狂的大脑进化史,大脑科学的革命
- 自己捣鼓的小程序实现订单代付的功能
- Linux iptables 防火墙 添加删除 端口
- 计算机函数公式大全ppt,三角函数公式大全分解.ppt
- 获取android基带版本信息,android手机的基带怎么查看?