Hive函数 窗口函数 | 「掘金日新计划 · 10 月更文挑战」

108 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 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

三、引用参考&推荐书目:

  1. www.bilibili.com/video/BV1EZ… 尚硅谷大数据Hive教程(基于hive3.x丨hive3.1.2)