【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

相关推荐
大大大大晴天14 小时前
Hudi技术内幕:RecordPayload到RecordMerger
大数据
SelectDB1 天前
秒级弹性、最高降本 70%:SelectDB Serverless 如何重塑云数仓资源效率
大数据·后端·云原生
WhoAmI1 天前
MapReduce框架原理解析一:InputFormat
大数据·hadoop
WhoAmI1 天前
MapReduce框架原理解析三:OutputFormat
大数据·hadoop
WhoAmI1 天前
MapReduce框架原理解析二:Shuffle
大数据·hadoop
大大大大晴天2 天前
Hudi技术内幕:Key Generation原理与实践
大数据
得物技术6 天前
从埋点需求到规则资产:Hermes Agent 重构得物数仓工作流
大数据·llm·ai编程
久美子6 天前
AI驱动数仓建设的Harness工程实践——本体建模、知识分层与上下文工程
大数据
大树886 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
大志哥1236 天前
ES和Logstash日志链路系统上线后遭遇切片爆炸(解决)
大数据·elasticsearch