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

Posted 程序员的小傲娇

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据技术-hive窗口函数详解相关的知识,希望对你有一定的参考价值。

有不少同学一听这个标题,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)

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

range between [num] PRECEDING AND [num] FOLLOWING

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

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

以上就是关于大数据hive窗口函数的介绍了,希望对大家有所帮助。想了解更多大数据相关知识,欢迎关注小千,后期会继续分享大数据技术知识。

本文来自千锋教育,转载请注明出处。

以上是关于大数据技术-hive窗口函数详解的主要内容,如果未能解决你的问题,请参考以下文章

大数据技术之Hive函数压缩和存储

大数据之-HIVE入门(二十)

大数据入门第十一天——hive详解hive函数

大数据批处理之Hive详解

数据分析课程笔记 - 20 - HIVE 核心技能之窗口函数

大数据技术架构(组件)10——Hive:集合函数&类型转化函数