首页 > 其他分享 >hive窗口函数极速入门

hive窗口函数极速入门

时间:2022-10-11 19:00:57浏览次数:52  
标签:窗口 入门 PRECEDING hive 参数 value 排序 极速 函数

1 over()窗口函数

1.1 语法结构

分析函数 over(partition by 列名 order by 列名 rows between 开始位置 and 结束位置)

1.2 over中的三个函数具体含义

  • order by:排序的意思,跟sql一样

  • partition by:分区的概念,后面接字段表示跟什么分区,比如日期 partition by day

  • rows between 开始位置 and 结束位置:窗口范围

    PRECEDING:往前
    FOLLOWING:往后
    CURRENT ROW:当前行
    UNBOUNDED:起点(一般结合PRECEDING,FOLLOWING使用)
    UNBOUNDED PRECEDING 表示该窗口最前面的行(起点)
    UNBOUNDED FOLLOWING:表示该窗口最后面的行(终点)
    比如说:
    ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW(表示从起点到当前行)
    ROWS BETWEEN 2 PRECEDING AND 1 FOLLOWING(表示往前2行到往后1行)
    ROWS BETWEEN 2 PRECEDING AND 1 CURRENT ROW(表示往前2行到当前行)
    ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING(表示当前行到终点)
    

2 与over窗口函数一般配套使用的分析函数

2.1 聚合类

  1. 内容
  • avg()
  • sum():注意下这边:和 order by 函数一起使用,就是按照排序,逐行累加
  • max()
  • min()
  • count():注意下这边:和 order by 函数一起使用,就是按照排序,计数累加
  1. 使用:略,和sql一样

2.2 排名类

  1. 内容
  • row_number()
  • rank()
  • dense_rank()
  1. 使用
  • row_number()按照值排序时产生一个自增编号,不会重复(如:1、2、3、4、5、6)
  • rank() 按照值排序时产生一个自增编号,值相等时会重复,会产生空位(如:1、2、3、3、3、6)
  • dense_rank() 按照值排序时产生一个自增编号,值相等时会重复,不会产生空位(如:1、2、3、3、3、4)

2.3 其他类

  1. lag()
  • lag(col,n,DEFAULT) 用于统计窗口内往上第n行值
  • 参数含义:第一个参数为列名,第二个参数为往上第n行(可选,默认为1),第三个参数为默认值(当往上第n行为NULL时候,取默认值,如不指定,则为NULL)
  1. lead()
  • lead(col,n,DEFAULT) 用于统计窗口内往下第n行值
  • 参数含义:第一个参数为列名,第二个参数为往下第n行(可选,默认为1),第三个参数为默认值(当往下第n行为NULL时候,取默认值,如不指定,则为NULL)
  1. ntile()
  • ntile(n)用于将分组数据按照顺序切分成n片,返回当前切片值

  • 参数含义:参数n表示将数据分为几块,并返回n所在的那一块

  1. first_value()
  • first_value(字段) 取分组内排序后,截止到当前行,第一个值
  • 参数含义:first_value(字段),参数是字段,和分组排序搭配使用后,表示该字段的第一个值作为结果返回
  • 来张图理解一下 image.png
  1. last_value()
  • last_value(字段)取分组内排序后,截止到当前行,最后一个值
  • 参数含义:last_value(字段),参数是字段,和分组排序搭配使用后,表示该字段的第最后一个值作为结果返回

3 总结

我感觉是,hive中方便和分析函数一起查看原表数据的一种工具

4 详细参考与案例

想做案例练习可以参考这个小伙伴的视频,刷一下很快的:窗口函数详解+12套案例练习 https://www.bilibili.com/video/BV1DK411J7E4?p=2&vd_source=bf4eb9e00649104ee4ec443e363be4b6

标签:窗口,入门,PRECEDING,hive,参数,value,排序,极速,函数
From: https://blog.51cto.com/u_15316078/5747724

相关文章

  • Linux中的hive使用小技巧
    Linux中的hive使用小技巧1在hive中可以看出我们在那一层中,而且可以显示表中的字段2配置如下(CDH中):目录如下:在目录汇总添加如下参数(为隐藏文件使用ls-a命令查看即......
  • PCL 入门教程 - 官方文档翻译
    介绍以下链接描述了一组基本PCL教程。请注意,他们的源代码可能已经作为PCL常规版本的一部分提供,因此在开始复制和粘贴代码之前请检查那里。下面的教程列表是根据git存储库......
  • AutoCAD2014 辅助设计从入门到精通
    【出版信息】书名:AutoCAD2014辅助设计从入门到精通书号:978-7-111-45385-7作者:钟日铭等开本:16开出版时间:2014.1出版社:机械工业出版社【内容简介】本书以最新的AutoCAD......
  • 【洛谷】P8256 [NOI Online 2022 入门组] 字符串(dp)
    原题链接题意给定两个由0,1,-组成的字符串\(S\),\(T\),以及一个空串\(R\)。\(S\)的长度为\(n\)。现在要进行\(n\)次操作,每一次操作取出\(S\)的第一个字符\(c\)......
  • Hive数据导出的几种方式
     在hive的日常使用中,经常需要将hive表中的数据导出来,虽然hive提供了多种导出方式,但是面对不同的数据量、不同的需求,如果随意就使用某种导出方式,可能会导致导出时间过长,导......
  • antsword入门级攻击——一句话木马
    最近接触到木马攻击,打算用antsword来测试。https://github.com/AntSwordProject/antSword是官网地址,里面有链接到说明文档https://www.yuque.com/antswordproject/antswo......
  • web全栈 HTML5/CSS基础至入门到精通 加项目实战-专题视频课程
    web全栈HTML5/CSS基础至入门到精通加项目实战—7536人已学习课程介绍        web全栈前端工程师课程主要内容html5细节技术和css细节技术介绍还有项目......
  • 前段 HTML5/CSS+jquery +javascript 13天 短期快速 从基础 入门到实战精通 项目实战-
    HTML5/CSS+jquery+javascript13天从基础入门到实战精通项目实战—14780人已学习课程介绍        1.前端技术总体介绍htmlcssjqueryjavascript2.编辑第......
  • 前端基础(1) - HTML入门
    1.概述HTML入门知识图谱 什么是HTML大名:HyperTextMarkupLanguage寓意:超文本标记语言 HTML文件结构HTML常用转义字符转义字符注意点1、转义字符各......
  • 前端基础(2) - CSS入门
    CSS入门知识图谱 1.CSS基础CSS分类:外部、内部、行内样式;ps:基础知识,具体内容百度CSS样式文件结构:示例-内部样式表创建格式:2.CSS基本使用2.1.css选择器示例代码......