`
dacoolbaby
  • 浏览: 1265745 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Hive的窗口函数

    博客分类:
  • Hive
阅读更多

Window Function又称做窗口函数,分析函数。
在Oracle里面就有这样的分析函数,用于数据统计分析之用。

在Hive里面,数据分析也提出相似的需求。

使用方法如下:
select t.*, row_number() over(partition by area sort by updated_date ) as rno
from table_name t

over()表示当前查询的结果集对象,括号里面的语句则表示对这个结果集进行处理。


在Hive里面,可以把这一部分独立抽出来做声明。如:
select  p_mfgr,p_name, p_size,

sum(p_retailprice) over w1 as s,

min(p_retailprice) over w1 as mi,

max(p_retailprice) over w1 as ma,

avg(p_retailprice) over w1 as ag

from part

window w1 as (distribute by p_mfgr sort by p_mfgr, p_name rows between 2 preceding and 2 following);

其中的window w1 则是抽出声明的窗口部分。

假如一个SQL如下:
select t.*, sum(pay) over(distribute by area sort by updated_date ) as rno
from table_name t;
是根据地区来汇总,那么我要取所有地区的金额呢?

select t.*,
       sum(pay) over(sort by updated_date
       rows between unbounded preceding and unbounded following) as rno
from table_name t;

rows between ... preceding and ... following。从字面上猜测它的意思是:在XXX之前和XXX之后的所有记录

如果想计算当月累计的费用呢?
比如说,3月份的值=1月+2月+3月的费用。
如下:
select t.*,
       sum(pay) over(sort by month
       rows between unbounded preceding and unbounded following) as current_sum_sales
from table_name t;
 
 
除了rows关键字,还有range关键字指定范围
select t.*,
       sum(pay) over(sort by month
       range between 1 preceding and 1 following) as closeset_3_month_sales
from table_name t;
这里计算出来的值就是,当月+上一个月+下一个月的值。

 


如果在一条Hive SQL涉及到多个窗口函数的引用呢?
select p_mfgr, p_name, p_size,

sum(p_size) over w1 as s1,

sum(p_size) over w2 as s2,

sum(p_size) over w3 as s3

from part

window w1 as (distribute by p_mfgr sort by p_name range between 2 preceding and 2 following), 
      w2 as w3,

       w3 as (distribute by p_mfgr sort by p_name range between unbounded preceding and current row);

1
0
分享到:
评论

相关推荐

    hive窗口函数.docx

    Hive 窗口函数详解 Hive 窗口函数是 Hive 中的一种强大的分析函数,它可以对数据进行分类、排序、聚合和排名等操作。下面将详细介绍 Hive 窗口函数的语法结构、分类、应用场景和实践练习。 窗口函数语法结构 窗口...

    hive窗口函数

    ### Hive窗口函数详解 #### 一、概述 在大数据处理领域,Apache Hive 是一个广泛使用的数据仓库工具,它提供了一种SQL-like的语言——HiveQL,使得用户能够更方便地进行数据汇总、特殊查询和分析。其中,窗口函数...

    Hive窗口函数,定义、demo

    Hive窗口函数主要包括以下几种类型: 1. **聚合函数**:如`SUM()`, `AVG()`, `COUNT()`, `MIN()`, `MAX()`,它们在窗口内执行聚合操作。 2. **排名函数**:如`ROW_NUMBER()`, `RANK()`, `DENSE_RANK()`,它们为窗口...

    Hive SQL大厂必考常用窗口函数及面试题.pdf

    【Hive SQL大厂必考常用窗口函数及面试题】主要涵盖了窗⼝函数在大数据分析中的应用,尤其在OLAP(在线分析处理)场景中的重要性。窗⼝函数是一种标准SQL功能,它允许对数据库数据进行实时分析处理,如市场分析、...

    大数据hive中窗口函数的一些常用函数

    大数据Hive中窗口函数的一些常用函数 窗口函数是Hive中一种强大的分析工具,可以对数据进行复杂的分析和计算。窗口函数可以像聚合函数一样对一组数据进行分析并返回结果,但不同之处在于,窗口函数不是将一组数据...

    hive常用函数参数手册

    **窗口函数** - 用于在数据集的不同窗口上执行计算,如累计计算、排名等。 - **`LEAD`**: 下一个值。 - **`LAG`**: 上一个值。 - **`FIRST_VALUE`**: 窗口内第一个值。 - **`LAST_VALUE`**: 窗口内最后一个值。...

    Hive语法详解

    #### 六、Hive窗口函数与行列转换 窗口函数允许用户在一组相关的行上执行计算,这些行称为窗口。常用的窗口函数有`SUM`、`AVG`、`COUNT`等。行列转换则允许用户将行转换为列或将列转换为行,常用函数包括`PIVOT`和`...

    hive数仓、hive SQL 、 hive自定义函数 、hive参数深入浅出

    - 高级查询:支持JOIN、子查询、窗口函数、聚合函数、集合操作(UNION、INTERSECT、EXCEPT)等。 - 表达式与函数:内置函数包括数学、字符串、日期时间等多种类型,同时支持用户自定义函数(UDF)。 3. Hive...

    HiveSQL基础窗口函数学习笔记

    本学习笔记主要聚焦于HiveSQL中的窗口函数,这是进行复杂数据分析的重要工具。 窗口函数允许我们在一个数据集上进行计算,而不仅仅是基于单行记录,而是基于一个“窗口”内的多行数据。这个窗口可以是当前行及其...

    查询前几条记录

    在IT行业中,数据库查询是日常开发工作中的重要环节。当我们需要获取数据库中的一部分数据时,通常会使用查询语句。"查询前几条记录"这个主题聚焦于如何从数据库表中提取出最早添加或者最相关的若干条数据。...

    hive函数大全.doc

    除此之外,还有除法(/)、模运算(%)、位运算(如BITWISE AND、BITWISE OR)等其他数学运算,以及各种聚合函数(如COUNT、SUM、AVG、MIN、MAX)和窗口函数(如LEAD、LAG、RANK、ROW_NUMBER等)。Hive还支持字符串...

    hive高级分析函数与优化.rar_hive_hive 函数优化_hive 分析 大数据_hive高级优化_oldwlc

    Hive提供了丰富的内置函数,包括聚合函数(如SUM、AVG、COUNT等)、转换函数(如TO_DATE、TRIM等)和窗口函数(如LEAD、LAG、RANK等)。高级分析函数如统计学习函数(如KMEANS、NAIVE_BAYES等)和时间序列分析函数...

    02.hive内置函数--窗口分析函数--row_number_over.mp4

    02.hive内置函数--窗口分析函数--row_number_over.mp4

    hive的函数大全.rar

    7. **窗口函数**:如`RANK()`(排名)、`ROW_NUMBER()`(行号)、`LAG()`(获取前一行的值)和`LEAD()`(获取后一行的值),在处理时间序列数据或需要基于行位置的操作时非常有用。 8. **统计函数**:包括`STDDEV()...

    hive 函数大全

    5. **窗口函数**:ROW_NUMBER, RANK, DENSE_RANK, LAG, LEAD等,用于处理有序数据的滑动窗口操作。 6. **连接函数**:JOIN操作允许将多个表的数据结合在一起。 7. **子查询和关联子查询**:用于更复杂的查询结构。 8...

    hive开窗函数知识点总结.txt

    工作中用到了几个hive开窗函数,便想把hive开窗函数系统梳理一遍。 开窗函数 普通的聚合函数聚合的行集是组,开窗函数聚合的行集是窗口。因此,普通的聚合函数每组(Group by)只返回一个值,而开窗函数则可为窗口中的每...

    Hive开窗函数测试-cube,rollup

    本篇将重点探讨Hive中的窗口函数以及如何利用它们进行cube和rollup操作。这些功能极大地增强了数据分析的能力,使得我们可以对数据进行更复杂的聚合。 窗口函数在SQL中是一种非常强大的工具,它允许我们在一个数据...

    Hive常用函数

    - **分区排序**:Hive 的分区功能可以极大地提高查询效率,配合窗口函数可用于时间序列分析。 - **动态 Group By**:在 GROUP BY 语句中使用 CASE 语句,可以根据条件动态分组。 - **Top N**:通过 ORDER BY 和 ...

Global site tag (gtag.js) - Google Analytics