持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第6天
一、本篇笔记重点内容:
- Hive函数、窗口函数
二、详细知识点介绍:
函数
UDF :一对一 UDAF:多对一 聚集函数 类似:count/max/min UDTF:一对多 如:lateral view explode()
行转列: 多列转一行
- concat 返回输入字符串连接后的结果,支持任意个输入字符串
- concat_ws 第一个参数是分隔符
- CONCAT_WS must be "string or array
case when then else end
列转行: 一行转多行
- explode
- LATERAL VIEW LATERAL VIEW udtf(expression) tableAlias AS columnAlias 用于和 split, explode 等 UDTF 一起使用,它能够将一列数据拆成多行数据,在此基础上可以对拆分后的数据进行聚合。
over()窗口函数
分析函数 over(partition by 列名 order by 列名 rows between 开始位置 and 结束位置) 即一行对应一个窗口,窗口的范围取决于over()函数里对窗口范围的约束: 注:通过order by 来对order by字段排序后的行进行开窗,第一行数据的窗口大小是1,第二行数据的窗口范围是前2行,第n行的窗口范围是前n行
-
此时每一行的窗口都是所有的行 select *,count(1) over() from test;
-
over(partition by name)每一行根据 name来区分窗口
-
over(order by date) orderdate=1的窗口只有一行,orderdate=2的窗口包括前两行
-
over(partition by name order by id) 每一行根据 name来区分窗口,再根据order by 取具体的范围。
常与over()一起使用的分析函数:
-
avg()、sum()、max()、min()
-
按照值排序时产生一个自增编号row_number()不会重复、rank()值相等时会重复产生空位、dense_rank()值相等时会重复不会产生空位。
-
lag
-
lead
三、引用参考&推荐书目:
- www.bilibili.com/video/BV1EZ… 尚硅谷大数据Hive教程(基于hive3.x丨hive3.1.2)