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

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

分析函数

分析函数会返回根据由 SELECT 子句标识或在 ORDER BY 子句中的有限行集中的数据(或该有限行集的相关数据)计算得出的结果。

SELECT 主题解释了 order-by 子句,显示了 order-by 图表以及窗口化子句(和 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 不能用作分析函数或用在窗口式聚合中。

相关主题