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 章 函数的主要内容,如果未能解决你的问题,请参考以下文章

第 8 章 函数

Hive:第 6 章 查询

第8章 模块

《机器学习实战》第8章书本正文缺少一个函数

第8章:让开发板发出声音:蜂鸣器

第8章 函数式编程(FP)