标签:regex 大小写 整数 向上取整 cat to_date 数值 cas 位置
show functions;
默认271个
desc function funname;
desc function max;
desc function extended funname;
desc function extended max;
USER DEFINE FUNCTION 用户定义函数,进一路出一路
USER DEFINE aggregate FUNCTION 用户定义聚合函数,进多路出一路
USER DEFINE table FUNCTION 用户定义表函数,进一路出多路
explode 炸裂
向上取整
ceil(x) 大于等于参数的第一个整数
向下取整
floor(x) 小于等于参数的第一个整数
round(x[, d]) 参数1 需要四舍五入的数 参数2:小数位数
select round(3.556789);
select round(3.556789,2);
求随机数 0-1
rand([seed]) 参数:随机数种子,种子一样的,随机数固定的。
一般使用无参的select rand();
hive中的字符串,下标1开始的,字符串从右向左标记-1开始的。
split(str, regex) 参数1 字符串 参数2 切分的分隔符
select split("a,b,c,d",","); 返回值 数组类型
instr(str, substr) 参数1:原始字符串,参数2:需要查找的子字符串
返回子字符串在原始字符串中第一次出现的位置,不存在 0
select instr("hello word","wo");
select instr("hello word","ww");
ucase 大写
lcase 小写
upper 大写
lower 小写
ucase(str)
substr
substring
substr(str, pos[, len]) 参数1 字符串 参数2 位置 参数3 截取长度
trim(str) 去前后空格
ltrim(str) 去前空格
rtrim(str) 去后空格
concat(str1, str2, ... strN) 将参数拼接为一个字符串
concat_ws(分隔符,str1,str2....) 按照一定的分隔符,拼接字符串的
length 返回字符串长度
current_timestamp()
select current_timestamp(); 日期 时间
current_date
select current_date(); 获取当前系统的日期的
from_unixtime
from_unixtime(unix_time, format) 参数1 时间戳 参数2 日期格式
select from_unixtime(1558281600,"yyyy-MM-dd hh:mm:ss");
时间戳转成日期,其中时间戳必须是整形。
unix_timestamp(date[, pattern]) 参数1 日志 参数2 参数1的表达式
select unix_timestamp("2019-5-20 17:27:56","yyyy-MM-dd hh:mm:ss");
year 年
month 月
day
hour
minute
second
select year("2019-3-4");
to_date:返回日期
date_add:当前日期加几天
date_sub:当前日期 减几天
day:当前日期的号
month:当前日期是几月份
year:当前日期是哪一年
2018-6-30
weekofyear:给定的日期的周数
cast(原始数据 as 需要转换的类型)
cast(age as bigint)
if(判断,返回值1,返回值2);
类似java中的三元运算符
nvl(需要判断的字段,参数1为null的返回值);
用于处理null值
coalesce;
返回第一个不为null的值
explode:炸裂函数,将数组或map集合进行炸裂。
数组或map集合中的每一个元素为一行[1,2,3,4]{a:1,b:2}
对于数组每个元素只有一个,炸裂的结果只有一列,对于map每个元素有k-v 炸裂出来的结果2列。
作为查询的参数
hive中提供的,运用一定的语法,可以按照我们的用户需求,将表中的数据分成多个独立的部分,每一个部分都是单独执行的,每一个部分数据称为一个窗口,每一个窗口内部的逻辑只执行当前窗口的数据,不会垮窗口执行数据。
开窗函数一般和其他的功能性函数一起使用,在都出开窗的那一字段。
在over子句中可以只给排序,默认只有一个窗口。
over子句用于指定开窗的,每一个“窗口”依据。一般情况下,指定的每一个窗口按照某一个字段相同的数据放在每一个窗口中。
over(指定开窗依据的字段 指定每一个窗口内的排序规则)
必须要指定的。
一旦指定开窗依据的字段,就会将相同的字段值,放在一个窗口中。
语法:
distribute by 字段名
partition by 字段名
可以指定,也可以不指定。
语法:
sort by --- distribute by
order by --- partition by
over(partition by ...order by ..)
over(distribute by ....sort by )
over子句(开窗)不能单独使用,需要配合一些功能性的函数一起使用。
max(字段) | sum(字段) + over子句,根据over子句指定的开窗规则,进行求每一个窗口内部的最大值 | 总和。
一般用于利润累计,目前最大值等
rank|dense_rank 添加排名的,每个开窗内部,添加排名的
row_number添加行号的,1开始的
标签:regex 大小写 整数 向上取整 cat to_date 数值 cas 位置
原文地址:https://www.cnblogs.com/zhangxiaofan/p/11037417.html