在仔細考慮之後,我們決定在兩個步驟中停止 Amazon Kinesis Data Analytics for SQL 應用程式:
1. 從 2025 年 10 月 15 日起,您將無法為SQL應用程式建立新的 Kinesis Data Analytics。
2. 我們將從 2026 年 1 月 27 日起刪除您的應用程式。您將無法啟動或操作SQL應用程式的 Amazon Kinesis Data Analytics。從那時SQL起,Amazon Kinesis Data Analytics 將不再提供 的支援。如需詳細資訊,請參閱Amazon Kinesis Data Analytics for SQL 應用程式終止。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
輪轉窗口(使用 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);