SparkSQL window functions
发布时间
阅读量:
阅读量
窗口函数的概念可参考某权威人士的界定:所谓窗口函数,其本质是依据表格中每一行输入数据,结合一组特定行进行运算,从而得出对应的返回值。窗口函数与其他类型函数之间存在显著差异:
- 常规函数:针对数据表中的每一条记录进行处理,生成新的字段信息,但整体记录数量保持不变;
- 聚合函数:对数据集中的若干条记录进行分组处理,并最终计算出一个聚合结果,因此记录总数会减少;
- 窗口函数:与常规函数类似,同样作用于每条记录之上,但其运算过程需根据指定的多条记录进行计算,并且最终记录数量维持不变。
关于窗口函数的语法结构如下所示:
<窗口函数>(参数)
OVER
(
[PARTITION BY <列清单>]
[ORDER BY <排序用清单列>] [ASC/DESC]
(ROWS | RANGE) <范围条件>
)
- 函数名:
- OVER:作为关键字使用,用于标识该函数为窗口函数而非普通的聚合类函数;
- 子句部分:
- PARTITION BY:用于定义分组的关键字段;
- ORDER BY:用于设定排序所依赖的字段;
- ROWS/RANGE窗口子句:主要功能在于控制窗口范围的边界条件,具体分为两种形式(ROW、RANGE):
- ROW:属于物理意义上的窗口类型,在筛选数据时依据的是排序后的索引
全部评论 (0)
还没有任何评论哟~
