在仔細考慮之後,我們決定在兩個步驟中停止 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 應用程式終止。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
串流資料作業:串流聯結
您可以在應用程式中擁有多個應用程式內串流。您可以撰寫 JOIN
查詢來關聯到達這些串流的資料。舉例來說,假設您有以下應用程式內串流。
-
OrderStream— 接收正在下達的股票訂單。
(orderId
SqlType
, tickerSqlType
, amountSqlType
, ROWTIME TimeStamp) -
TradeStream— 接收這些訂單所產生的股票交易。
(tradeId
SqlType
, orderIdSqlType
, tickerSqlType
, amountSqlType
, tickerSqlType
, amountSqlType
, ROWTIME TimeStamp)
以下是將資料關聯到這些串流的 JOIN
查詢範例。
範例 1:報告下訂單後一分鐘內有交易的訂單
在此範例中,您的查詢會同時連接 OrderStream
和 TradeStream
。但是,由於我們只想要訂單後一分鐘下達的交易,因此查詢定義了 1 分鐘的 TradeStream
窗口。如需有關窗口查詢的資訊,請參閱滑動視窗。
SELECT STREAM ROWTIME, o.orderId, o.ticker, o.amount AS orderAmount, t.amount AS tradeAmount FROM OrderStream AS o JOIN TradeStream OVER (RANGE INTERVAL '1' MINUTE PRECEDING) AS t ON o.orderId = t.orderId;
您可以使用 WINDOW
子句明確定義窗口並編寫前面的查詢,如下所示:
SELECT STREAM ROWTIME, o.orderId, o.ticker, o.amount AS orderAmount, t.amount AS tradeAmount FROM OrderStream AS o JOIN TradeStream OVER t ON o.orderId = t.orderId WINDOW t AS (RANGE INTERVAL '1' MINUTE PRECEDING)
當您在應用程式碼中包含此查詢時,應用程式碼會持續執行。針對 OrderStream
上的每個到達記錄,如果在下訂單後的 1 分鐘窗口內有交易,則應用程序將發出輸出。
在前面的查詢中的連接是一個內部聯接,其中查詢在 OrderStream
發出記錄,TradeStream
中也有一個相符的記錄(反之亦然)。使用外部連接,您可以創建另一個有趣的情景。假設您想要下單後一分鐘內沒有交易的股票訂單,以及同一窗口其他訂單的交易。此即外部聯結的案例。
SELECT STREAM ROWTIME, o.orderId, o.ticker, o.amount AS orderAmount, t.ticker, t.tradeId, t.amount AS tradeAmount, FROM OrderStream AS o LEFT OUTER JOIN TradeStream OVER (RANGE INTERVAL '1' MINUTE PRECEDING) AS t ON o.orderId = t.orderId;