Hive UDTF之explode函数
explode接收map、array类型的数据作为输入,然后把输入数据中的每个元素拆开变成一行数据,一个元素一行。 explode执行效果正好满足于输入一行输出多行,所有叫做UDTF函数。
select explode(`array`(11,22,33)) as item;
select explode(`map`("id",10086,"name","zhangsan","age",18));
Hive Windows Functions 窗口函数
窗口函数(Window functions)也叫做开窗函数、OLAP函数,
其最大特点是:输入值是从SELECT语句的结果集中的一行或多行的“窗口”中获取的。
如果函数具有OVER子句,则它是窗口函数。
窗口函数可以简单地解释为类似于聚合函数的计算函数,
但是通过GROUP BY子句组合的常规聚合会隐藏正在聚合的各个行,
最终输出一行,窗口函数聚合后还可以访问当中的各个行,
并且可以将这些行中的某些属性添加到结果集中。
窗口聚合函数
窗口表达式
在sum(…) over( partition by… order by … )语法完整的情况下,进行累积聚合操作,默认累积聚合行为是:从第一行聚合到当前行。 Window expression窗口表达式给我们提供了一种控制行范围的能力,比如向前2行,向后3行。 语法如下:
窗口排序函数–row_number家族
用于给每个分组内的数据打上排序的标号,注意窗口排序函数不支持窗口表达式 row_number :在每个分组中,为每行分配一个从1开始的唯一序列号,递增,不考虑重复; rank : 在每个分组中,为每行分配一个从1开始的序列号,考虑重复,挤占后续位置; dense_rank : 在每个分组中,为每行分配一个从1开始的序列号,考虑重复,不挤占后续位置;
|