经过仔细考虑,我们决定分两个步骤停止使用亚马逊 Kinesis Data Analytics SQL 的应用程序:
1. 从 2025 年 10 月 15 日起,您将无法为应用程序创建新的 Kinesis Data Analytic SQL s。
2. 我们将从 2026 年 1 月 27 日起删除您的申请。您将无法启动或操作适用于应用程序的 Amazon Kinesis Data Analytic SQL s。从那时起,亚马逊 Kinesis Data Analytics SQL 将不再提供支持。有关更多信息,请参阅 适用于应用程序的 Amazon Kinesis Data Analytic SQL s 停产。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
滚动窗口(使用 GROUP BY 组的聚合)
当一个窗口式查询以非重叠方式处理每个窗口时,这样的窗口称为滚动窗口。在这种情况下,应用程序内部流上的每个记录属于特定窗口。它只处理一次(当查询处理记录所属的窗口时)。
例如,使用 GROUP BY
子句的聚合查询在一个滚动窗口中处理行。入门练习中的演示流接收股票价格数据,而这些数据映射到应用程序中的应用程序内部流 SOURCE_SQL_STREAM_001
。这个流具有以下架构。
(TICKER_SYMBOL VARCHAR(4), SECTOR varchar(16), CHANGE REAL, PRICE REAL)
在您的应用程序代码中,假设您希望针对一分钟窗口找到每个股票行情机的聚合(最小、最大)价格。您可以使用以下查询。
SELECT STREAM ROWTIME, Ticker_Symbol, MIN(Price) AS Price, MAX(Price) AS Price FROM "SOURCE_SQL_STREAM_001" GROUP BY Ticker_Symbol, STEP("SOURCE_SQL_STREAM_001".ROWTIME BY INTERVAL '60' SECOND);
上述示例是一个基于时间的窗口式查询。该查询根据 ROWTIME
值将记录分组。对于每分钟进行的报告,STEP
函数将 ROWTIME
值向下舍入到最接近的分钟。
注意
您也可以使用 FLOOR
函数将记录分组为不同的窗口。但是,FLOOR
只能将时间值向下舍入到完整的时间单位(小时、分钟、秒等)。建议使用 STEP
以将记录分组为不同的滚动窗口,因为它可以将值向下舍入到任意间隔,例如,30 秒。
该查询是非重叠 (滚动) 窗口示例。GROUP
BY
子句在一分钟窗口内对记录进行分组,每个记录属于一个特定窗口 (不重叠)。查询每分钟发送一个输出记录,在其中提供在特定分钟时记录的最小/最大股票行情机价格。在根据输入数据流生成周期性报告时,此类查询很有用。在本示例中,报告是每分钟生成的。
测试查询
-
按照入门练习设置应用程序。
-
使用先前的
SELECT
查询替换应用程序代码中的SELECT
语句。下面显示得到的应用程序代码:CREATE OR REPLACE STREAM "DESTINATION_SQL_STREAM" ( ticker_symbol VARCHAR(4), Min_Price DOUBLE, Max_Price DOUBLE); -- CREATE OR REPLACE PUMP to insert into output CREATE OR REPLACE PUMP "STREAM_PUMP" AS INSERT INTO "DESTINATION_SQL_STREAM" SELECT STREAM Ticker_Symbol, MIN(Price) AS Min_Price, MAX(Price) AS Max_Price FROM "SOURCE_SQL_STREAM_001" GROUP BY Ticker_Symbol, STEP("SOURCE_SQL_STREAM_001".ROWTIME BY INTERVAL '60' SECOND);