千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > 大数据技术-hive窗口函数详解

大数据技术-hive窗口函数详解

来源:千锋教育
发布人:小千
时间: 2021-06-09 09:26:00 1623201960

      有不少同学一听这个标题,hive窗口函数是什么鬼?没听说过还有窗口函数这个东西啊,其实它的用处可大了,下面听小千慢慢道来。

      hive窗口函数

      窗口函数指定了函数工作的数据窗口大小(当前行的上下多少行),这个数据窗口大小可能会随着行的变化而变化。

      窗口函数和聚合函数区别

      窗口函数对于每个组返回多行,组内每一行对应返回一行值。聚合函数对于每个组只返回一行。

      在日常的开发中常用那些类型函数??

      1、字符串操作函数?split、concat、ifnull、cast

      2、聚合函数 : hive适用于分析,所以常用。

      3、时间函数 : 数仓的特征随时间变化而变化,所以时间也特别多

      4、窗口函数:sum() over() 、 count() over() 、 排名函数

      了解哪些窗口函数,都是什么意思?

      sum(col) over() :  分组对col累计求和

      count(col) over() : 分组对col累计

      min(col) over() : 分组对col求最小

      max(col) over() : 分组求col的最大值

      avg(col) over() : 分组求col列的平均值

      first_value(col) over() : 某分区排序后的第一个col值

      last_value(col) over() : 某分区排序后的最后一个col值 lag(col,n,DEFAULT) : 统计往前n行的col值,n可选,默认为1,DEFAULT当往上第n行为NULL时候,取默认值,如不指定,则为NULL

      lead(col,n,DEFAULT) : 统计往后n行的col值,n可选,默认为1,DEFAULT当往下第n行为NULL时候,取默认值,如不指定,则为NULL

      ntile(n) : 用于将分组数据按照顺序切分成n片,返回当前切片值。注意:n必须为int类型。

      over(分组 排序 窗口) 中的order by后的语法: 1、物理窗口(真实往上下移动多少行rows between):

      CURRENT ROW | UNBOUNDED PRECEDING | [num] PRECEDING AND UNBOUNDED FOLLOWING | [num] FOLLOWING| CURRENT ROW

      如: over(partition by col order by rows between 1 preceding and 1 fllowing)

1

      逻辑窗口(满足条件上下多少行):(金融行业、保险行业、p2p等)

      range between [num] PRECEDING AND [num] FOLLOWING

      如: over(partition by col order by range between 5 preceding and 5 fllowing)

2

      注意:窗口函数一般不和group by搭配使用。

      以上就是关于大数据hive窗口函数的介绍了,最后欢迎对大数据感兴趣的同学了解一下我们的大数据开发培训课程,内容包含Linux&&Hadoop生态体系、大数据计算框架体系、云计算体系、机器学习&&深度学习。现在咨询还能免费领取大数据学习资料,赶紧来找在线老师申领吧。

tags:
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT