分析函数 - Amazon Kinesis Data Analytics
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

分析函数

分析函数是这样一个函数:返回从位于 (或关于) 由 SELECT 子句标识的一组有限数量的行中或位于 ORDER BY 子句中的数据计算得出的结果。

SELECT 主题说明了 order-by 子句,同时显示了 order-by 图表以及 windowing 子句 (和 window-specification 图表)。要查看 Select 语句中使用 order-by 子句的位置,请参阅本指南的 SELECT 主题中的 Select 图表。

  1. 分析函数必须指定窗口。由于窗口规范存在一些限制,并且为窗口化聚合指定窗口与为窗口化联接指定窗口之间存在一些差别,请参阅允许的和不允许的窗口规范中的说明。

  2. 分析函数只能出现在 SELECT 子句的 <selection list> 部分或 ORDER BY 子句中。

其他区别将在本主题后面的表中说明。

使用分析函数执行查询通常称为“窗口化聚合”(如下文所述),不同于聚合函数

由于存在窗口规范,因此使用分析函数的查询将以不同于聚合查询的方式生成结果。对于输入集中的每个行,窗口规范将确定分析函数对起作用的不同行集。如果窗口规范还包含 PARTITION BY 子句,则在生成结果时将考虑的窗口中的行将是共享与输入行相同的分区的行。

如果某个输入行在用作分析函数的输入的列中包含了 null,则分析函数将忽略该行 (COUNT 除外,该函数不会计入包含 null 值的行)。在窗口 (或者对于 PARTITION BY,窗口内中的一个分区) 不包含任何行的情况下,分析函数将返回 null。此情况的例外是 COUNT,该函数将返回零。

聚合函数和分析函数之间的区别
函数类型 输出 使用的行数或窗口数 备注

聚合函数

每组输入行有一个输出行。

所有输出列通过同一窗口或同一组行进行计算。

聚合函数中不允许使用 COUNT DISTINCT。不允许以下类型的语句:

SELECT COUNT(DISTINCT x) ...FROM ...GROUP BY ...

分析函数

每个输入行有一个输出行。

每个输出列可使用不同的窗口或分区进行计算。

COUNT DISTINCT 不能用作分析函数或在窗口化聚合中使用。

相关主题