窗口分区子句

当指定了窗口分区子句时,它将基于用户提供的表达式拆分函数输入的行。如果没有提供表达式,分区子句可通过使用并行度来提升查询性能。

窗口分区与 GROUP BY 子句相似,区别在于它仅为每个输入行返回一个结果行。如果没有指定窗口分区子句,则会将所有输入行都视为一个分区。

当与分析函数一起使用时,将根据分区计算结果,并在下一个分区开始时重新开始。

语法

{ PARTITION BY expression[,...] | PARTITION BEST | PARTITION NODES }

参数

PARTITION BY expression
基于此表达式对分区进行排序,其中 expression 可以是列、常数或者针对列构成的任意表达式。对于带有特定分区要求的分析函数,使用 PARTITION BY
PARTITION BEST
使用并行度来提升多个节点中的多线程查询性能。

OVER(PARTITION BEST) 提供多个节点中的多线程查询最佳性能。

以下注意事项适用于使用 PARTITION BEST

  • 对于无分区要求且线程安全的分析函数(如一对多转换),使用 PARTITION BEST

  • 对于非线程安全的用户定义转换函数 (UDTF),不要使用 PARTITION BEST。这样做会导致出现错误或不正确的结果。如果 UDTF 非线程安全,使用 PARTITION NODES

PARTITION NODES
使用并行度来提升多个节点中的单线程查询性能。

OVER(PARTITION NODES) 提供多个节点中的单线程查询最佳性能。

示例

请参阅窗口分区