【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

相关推荐
Elastic 中国社区官方博客1 小时前
使用 Elasticsearch 和 AI 构建智能重复项检测
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
zhangjin12222 小时前
kettle插件-kettle http client plus插件,轻松解决https接口无法调用&文件流下载问题
大数据·http·https·etl·kettle·kettle教程·kettle插件
zuozewei8 小时前
随笔之TDengine基准测试示例
大数据·时序数据库·tdengine
数据要素X11 小时前
【数据架构10】数字政府架构篇
大数据·运维·数据库·人工智能·架构
ApacheSeaTunnel12 小时前
从日志到告警,带你用好 SeaTunnel 的事件监听能力
大数据·数据集成·seatunnel·技术分享
智海观潮13 小时前
DeepSeek在大数据领域正掀起一场深刻的变革
大数据·ai·deepseek
陈煜的博客14 小时前
elasticSearch 增删改查 java api
java·大数据·elasticsearch
zskj_zhyl15 小时前
让科技之光,温暖银龄岁月——智绅科技“智慧养老进社区”星城国际站温情纪实
大数据·人工智能·科技·生活
wzy062315 小时前
基于 Hadoop 生态圈的数据仓库实践 —— OLAP 与数据可视化(三)
hadoop·impala
不辉放弃16 小时前
Spark的累加器(Accumulator)
大数据·数据库·spark