当前位置: 首页 > news >正文

【hive】函数集锦:窗口函数、列转行、日期函数

窗口函数

https://www.cnblogs.com/Uni-Hoang/p/17411313.html

<窗口函数> OVER ([PARTITION BY <分组列> [, <分组列>...]][ORDER BY <排序列> [ASC | DESC] [, <排序列> [ASC | DESC]]...][<rows or range clause>])
)

窗口函数主要是三类:

  • 聚合函数,如sum、max、avg、min 等等
  • 排序函数,如row_number、rank、dense_rank
  • 分析函数,如lead、lag、first_value、last_VALUE

窗口边界的使用详解

preceding	往前following	往后current row	当前行unbounded	起点unbounded preceding	从前面的起点unbounded following	到后面的终点
  • 如果不指定 PARTITION BY,则不对数据进行分区,换句话说,所有数据看作同一个分区;

  • 如果不指定 ORDER BY,则不对各分区做排序,通常用于那些顺序无关的窗口函数,例如 SUM()

  • 如果不指定窗口子句,则默认采用以下的窗口定义:

    a、若不指定 ORDER BY,默认使用分区内所有行 ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING.

    b、若指定了 ORDER BY,默认使用分区内第一行到当前值 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW.

explode()函数和posexplode()函数

  • explode就是将hive一行中复杂的array或者map结构拆分成多行
  • posexplode 特点是不仅炸裂出数值,还附带索引,实现多列进行多行转换;
hive>with temp  as( select 'a,b,c,d' as examp_data1,'2:00,3:00,4:00,5:00' as examp_data2)select
data1
,data2
from temp
lateral view explode(split(examp_data1,',')) view1 as data1
lateral view explode(split(examp_data2,',')) view1 as data2
data1,data2
a,2:00
a,3:00
a,4:00
a,5:00
b,2:00
b,3:00
b,4:00
b,5:00
c,2:00
c,3:00
c,4:00
c,5:00
d,2:00
d,3:00
d,4:00
d,5:00
with temp  as( select 'a,b,c,d' as examp_data1,'2:00,3:00,4:00,5:00' as examp_data2)select
data1
,data2
from temp
lateral view posexplode(split(examp_data1,',')) view1 as index1,data1
lateral view posexplode(split(examp_data2,',')) view1 as index2,data2
where index1=index2
data1,data2
a,2:00
b,3:00
c,4:00
d,5:00

lateral view 和 lateral view outer 的区别

lateral view explode 炸裂的数组中如果存在null,则这一条数据舍弃;lateral view ourer explode 炸裂的数组中如果存在null,则这一条数据保留,炸裂的字段值填充为null ;

日期函数


https://blog.csdn.net/u013421629/article/details/80450047

相关文章:

  • QT的工程文件.pro文件
  • 使用 IntelliJ IDEA 安装通义灵码(TONGYI Lingma)插件,进行后端 Java Spring Boot 项目的用户用例生成及常见问题处理
  • 25.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--单体转微服务--用户服务接口
  • SQL手工测试(MySQL数据库)
  • 树莓派超全系列教程文档--(58)通过网络启动树莓派
  • 【LeetCode 热题100】网格路径类 DP 系列题:不同路径 最小路径和(力扣62 / 64 )(Go语言版)
  • 第6章:Neo4j数据导入与导出
  • 自定义连接线程池
  • 408第一季 - 数据结构 - 图
  • mybatis执行insert如何返回id
  • 星耀8上市品鉴暨北京中和吉晟吉利银河用户中心开业媒体见面会
  • 基于多维视角的大模型提升认知医疗过程层次激励编程分析
  • 关于IE浏览器被绑定安装,还卸载不掉
  • RabbitMQ work模型
  • 云原生监控体系建设:Prometheus+Grafana的企业级实践
  • 【11408学习记录】考研写作双核引擎:感谢信+建议信复合结构高分模板(附16年真题精讲)
  • LeetCode - 148. 排序链表
  • 自动驾驶科普(百度Apollo)学习笔记
  • vue.js not detected解决方法
  • LinuxSamba服务器配置篇
  • 企业网站设计注意事项/适合企业员工培训的课程
  • 做一个免费网站的流程/搜索引擎优化介绍
  • 电子商务网站策划方案/宁波seo排名外包公司
  • 网站建设网络推广/千锋教育官方网
  • 用固定ip做访问网站服务器/seo刷点击软件
  • 天水做网站的/网络营销方式有哪几种