Advertisement

SparkSQL window functions

阅读量:

窗口函数的概念可参考某权威人士的界定:所谓窗口函数,其本质是依据表格中每一行输入数据,结合一组特定行进行运算,从而得出对应的返回值。窗口函数与其他类型函数之间存在显著差异:

  • 常规函数:针对数据表中的每一条记录进行处理,生成新的字段信息,但整体记录数量保持不变;
  • 聚合函数:对数据集中的若干条记录进行分组处理,并最终计算出一个聚合结果,因此记录总数会减少;
  • 窗口函数:与常规函数类似,同样作用于每条记录之上,但其运算过程需根据指定的多条记录进行计算,并且最终记录数量维持不变。

关于窗口函数的语法结构如下所示:
<窗口函数>(参数)
OVER
(
[PARTITION BY <列清单>]
[ORDER BY <排序用清单列>] [ASC/DESC]
(ROWS | RANGE) <范围条件>
)

  • 函数名:
  • OVER:作为关键字使用,用于标识该函数为窗口函数而非普通的聚合类函数;
  • 子句部分:
    • PARTITION BY:用于定义分组的关键字段;
    • ORDER BY:用于设定排序所依赖的字段;
    • ROWS/RANGE窗口子句:主要功能在于控制窗口范围的边界条件,具体分为两种形式(ROW、RANGE):
      • ROW:属于物理意义上的窗口类型,在筛选数据时依据的是排序后的索引

全部评论 (0)

还没有任何评论哟~