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

STDDEV_POP

返回为组中其余每行计算的 <number expression> 的 VAR_POP 总体方差的平方根。

在使用 STDDEV_POP 时,请注意以下事项:

  • 当输入集没有非 null 数据时,STDDEV_POP 将返回 NULL

  • 如果您未使用 OVER 子句,则 STDDEV_POP 将通过聚合函数进行计算。在此情况下,聚合查询必须根据将流分组到有限行中的 GROUP BY 子句 在单调表达式中包含 ROWTIME。否则,组将是无限流,并且查询绝对无法完成,也不会发出任何行。有关更多信息,请参阅 聚合函数

  • 使用 GROUP BY 子句的窗口式查询在滚动窗口中处理行。有关更多信息,请参阅滚动窗口(使用 GROUP BY 的聚合)

  • 如果您使用 OVER 子句,则 STDDEV_POP 将通过分析函数进行计算。有关更多信息,请参阅 分析函数

  • 使用 OVER 子句的窗口式查询在滑动窗口中处理行。有关更多信息,请参阅滑动窗口

语法

STDDEV_POP ( [DISTINCT | ALL] number-expression )

参数

ALL

在输入集中包含重复值。ALL 是默认值。

DISTINCT

在输入集中排除重复值。

示例

示例数据集

以下示例基于示例股票数据集,后者是《Amazon Kinesis Analytics 开发人员指南》 中的入门练习的一部分。要运行每个示例,您需要具有示例股票代码输入流的 Amazon Kinesis Analytics 应用程序。要了解如何创建 Analytics 应用程序和配置示例股票代码输入流,请参阅《Amazon Kinesis Analytics 开发人员指南》 中的入门

具有以下架构的示例股票数据集。

(ticker_symbol VARCHAR(4), sector VARCHAR(16), change REAL, price REAL)

示例 1:确定滚动窗口查询内的列中的总体标准差

以下示例演示如何使用 STDDEV_POP 函数来确定示例数据集的 PRICE 列的滚动窗口中的值的标准差。未指定 DISTINCT,因此计算中将包含重复值。

使用 STEP(推荐)

CREATE OR REPLACE STREAM "DESTINATION_SQL_STREAM" (ticker_symbol VARCHAR(4), stddev_pop_price REAL); CREATE OR REPLACE PUMP "STREAM_PUMP" AS INSERT INTO "DESTINATION_SQL_STREAM" SELECT STREAM ticker_symbol, STDDEV_POP(price) AS stddev_pop_price FROM "SOURCE_SQL_STREAM_001" GROUP BY ticker_symbol, STEP(("SOURCE_SQL_STREAM_001".ROWTIME) BY INTERVAL '60' SECOND);

使用 FLOOR

CREATE OR REPLACE STREAM "DESTINATION_SQL_STREAM" (ticker_symbol VARCHAR(4), stddev_pop_price REAL); CREATE OR REPLACE PUMP "STREAM_PUMP" AS INSERT INTO "DESTINATION_SQL_STREAM" SELECT STREAM ticker_symbol, STDDEV_POP(price) AS stddev_pop_price FROM "SOURCE_SQL_STREAM_001" GROUP BY ticker_symbol, FLOOR(("SOURCE_SQL_STREAM_001".ROWTIME - TIMESTAMP '1970-01-01 00:00:00') SECOND / 10 TO SECOND);

结果

上一示例输出的流与以下内容类似:

示例 2:确定滑动窗口查询内的列中的值的总体标准差

以下示例演示如何使用 STDDEV_POP 函数来确定示例数据集的 PRICE 列的滑动窗口中的值的标准差。未指定 DISTINCT,因此计算中将包含重复值。

CREATE OR REPLACE STREAM "DESTINATION_SQL_STREAM" (ticker_symbol VARCHAR(4), stddev_pop_price REAL); CREATE OR REPLACE PUMP "STREAM_PUMP" AS INSERT INTO "DESTINATION_SQL_STREAM" SELECT STREAM ticker_symbol, STDDEV_POP(price) OVER TEN_SECOND_SLIDING_WINDOW AS stddev_pop_price FROM "SOURCE_SQL_STREAM_001" WINDOW TEN_SECOND_SLIDING_WINDOW AS ( PARTITION BY ticker_symbol RANGE INTERVAL '10' SECOND PRECEDING);

上一示例输出的流与以下内容类似:

另请参阅