【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

相关推荐
RunningShare2 小时前
千万级用户电商平台,Flink实时推荐系统如何实现毫秒级延迟?
大数据·flink·推荐系统·ab测试
INFINI Labs3 小时前
如何使用 INFINI Gateway 对比 ES 索引数据
大数据·elasticsearch·gateway·easysearch
K_i1344 小时前
中国电信用户行为实时分析系统运维实战
hadoop·mysql
风跟我说过她5 小时前
Sqoop的安装与配置
hive·hadoop·经验分享·centos·hbase·sqoop
他们叫我技术总监9 小时前
外企 BI 工具选型:从合规到落地
大数据·bi
Lansonli10 小时前
大数据Spark(六十七):Transformation转换算子distinct和mapValues
大数据·分布式·spark
RunningShare11 小时前
基于Flink的AB测试系统实现:从理论到生产实践
大数据·flink·ab测试
Jolie_Liang13 小时前
保险业多模态数据融合与智能化运营架构:技术演进、应用实践与发展趋势
大数据·人工智能·架构
武子康14 小时前
大数据-118 - Flink 批处理 DataSet API 全面解析:应用场景、代码示例与优化机制
大数据·后端·flink
文火冰糖的硅基工坊14 小时前
《投资-78》价值投资者的认知升级与交易规则重构 - 架构
大数据·人工智能·重构