Hive:第 8 章 函数
Posted 亿钱君
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hive:第 8 章 函数相关的知识,希望对你有一定的参考价值。
函数
1. 系统内置函数
2. 常用内置函数
2.1 空字段赋值
NVL:给值为 NULL 的数据赋值,它的格式是 NVL( value,default_value)。
举例:查询:如果员工的 comm 为 NULL,则用-1 代替
hive (default)> select comm,nvl(comm, -1) from emp;
举例:查询:如果员工的 comm 为 NULL,则用领导 id 代替
hive (default)> select comm, nvl(comm,mgr) from emp;
2.2 CASE WHEN THEN ELSE END
2.3 行转列(多行变一行)
- CONCAT(string A/col, string B/col…):返回输入字符串连接后的结果,支持任意个输入字符串(直接连接,无分隔符)
- CONCAT_WS(separator, str1, str2,…):按分隔符连接,第一参数是分隔符
- COLLECT_SET(col):函数只接受基本数据类型,它的主要作用是将某字段的值进行去重汇总,产生 Array 类型字段
2.4 列转行(一行变多行)
- EXPLODE(col):将 hive 一列中复杂的 Array 或者 Map 结构拆分成多行。
- LATERAL VIEW:用于和 split, explode 等 UDTF 一起使用,它能够将一列数据拆成多行数据,在此基础上可以对拆分后的数据进行聚合
例如一:
例如二:
注意:
2.5 窗口函数(开窗函数)(未弄懂!!!!)
2)数据准备:name,orderdate,cost
3)按需求查询数据:查询在 2017 年 4 月份购买过的顾客及总人数
4)按需求查询数据:查询顾客的购买明细及月购买总额
5)按需求查询数据:将每个顾客的 cost 按照日期进行累加
6)按需求查询数据:查看顾客上次的购买时间
7)按需求查询数据:查询前 20%时间的订单信息
2.6 Rank(和开窗函数合用,未弄懂!!!!)
2.7 其他常用函数
常用日期函数
unix_timestamp:返回当前或指定时间的时间戳
select unix_timestamp();
select unix_timestamp("2020-10-28",'yyyy-MM-dd');
from_unixtime:将时间戳转为日期格式
select from_unixtime(1603843200);
current_date:当前日期
select current_date;
current_timestamp:当前的日期加时间
select current_timestamp;
to_date:抽取日期部分
select to_date('2020-10-28 12:12:12');
year:获取年
select year('2020-10-28 12:12:12');
month:获取月
select month('2020-10-28 12:12:12');
day:获取日
select day('2020-10-28 12:12:12');
hour:获取时
select hour('2020-10-28 12:12:12');
minute:获取分
select minute('2020-10-28 12:12:12');
second:获取秒
select second('2020-10-28 12:12:12');
weekofyear:当前时间是一年中的第几周
select weekofyear('2020-10-28 12:12:12');
dayofmonth:当前时间是一个月中的第几天
select dayofmonth('2020-10-28 12:12:12');
months_between: 两个日期间的月份
select months_between('2020-04-01','2020-10-28');
add_months:日期加减月
select add_months('2020-10-28',-3);
datediff:两个日期相差的天数
select datediff('2020-11-04','2020-10-28');
date_add:日期加天数
select date_add('2020-10-28',4);
date_sub:日期减天数
select date_sub('2020-10-28',-4);
last_day:日期的当月的最后一天
select last_day('2020-02-30');
date_format(): 格式化日期
select date_format('2020-10-28 12:12:12','yyyy/MM/dd HH:mm:ss');
常用取整函数
round: 四舍五入
select round(3.14);
select round(3.54);
ceil: 向上取整
select ceil(3.14);
select ceil(3.54);
floor: 向下取整
select floor(3.14);
select floor(3.54);
常用字符串操作函数
upper: 转大写
select upper('low');
lower: 转小写
select lower('low');
length: 长度
select length("atguigu");
trim: 前后去空格
select trim(" atguigu ");
lpad: 向左补齐,到指定长度
select lpad('atguigu',9,'g');
rpad: 向右补齐,到指定长度
select rpad('atguigu',9,'g');
regexp_replace:使用正则表达式匹配目标字符串,匹配成功后替换!
SELECT regexp_replace('2020/10/25', '/', '-');
集合操作
size: 集合中元素的个数
select size(friends) from test3;
map_keys: 返回map中的key
select map_keys(children) from test3;
map_values: 返回map中的value
select map_values(children) from test3;
array_contains: 判断array中是否包含某个元素
select array_contains(friends,'bingbing') from test3;
sort_array: 将array中的元素排序
select sort_array(friends) from test3;
grouping_set:多维分析
3. 自定义函数
3.1 自定义 UDF 函数
3.2 自定义 UDTF 函数
以上是关于Hive:第 8 章 函数的主要内容,如果未能解决你的问题,请参考以下文章