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

窗口函数

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

sql 复制代码
<窗口函数> 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 特点是不仅炸裂出数值,还附带索引,实现多列进行多行转换;
sql 复制代码
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
sql 复制代码
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

相关推荐
石像鬼₧魂石16 分钟前
钢结构ERP管理系统 —— 玻璃拟态 · 单文件HTML(系统为开发测试虚拟数据)
大数据·数据仓库·制造·数据库开发·数据库架构
软件技术新观察18 分钟前
2026年北京教育医疗小程序与APP定制开发:十大服务商实力测评
大数据·小程序
石像鬼₧魂石30 分钟前
贵州商会管理系统 —— 商协会数字化运营一站式平台
大数据·数据结构·物联网·eclipse·数据库架构
jkyy201410 小时前
深耕AI健康医疗数据智库,赋能企业构建主动健康管理新生态
大数据·人工智能·健康医疗
2601_9619460812 小时前
AI API 网关实战:从单 Key 管理到企业级多租户架构
大数据·人工智能·金融·架构·api·个人开发
大大大大晴天14 小时前
Flink CDC 深度解析:从原理到实践的全链路指南
大数据·flink
IT新视界15 小时前
Elasticsearch信创国产化替代
大数据·elasticsearch·搜索引擎
汇策研习社15 小时前
改良版ADX指标实战指南:告别传统ADX滞后、震荡误判难题
大数据·经验分享·金融·区块链·fastbull
SelectDB16 小时前
宽表元数据膨胀怎么解?Doris Segment V3 对比 Parquet、Lance
大数据·数据库·数据分析
隔窗听雨眠17 小时前
从追赶者到定义者:中国BI如何借助AI实现弯道超车
大数据·人工智能