在仔細考慮之後,我們決定停止 Amazon Kinesis Data Analytics for SQL 應用程式:
1. 從 2025 年 9 月 1 日起,我們不會為 Amazon Kinesis Data Analytics for SQL 應用程式提供任何錯誤修正,因為考慮到即將終止,我們將對其提供有限的支援。
2. 從 2025 年 10 月 15 日起,您將無法建立新的 Kinesis Data Analytics for SQL 應用程式。
3. 我們將自 2026 年 1 月 27 日起刪除您的應用程式。您將無法啟動或操作 Amazon Kinesis Data Analytics for SQL 應用程式。從那時起,Amazon Kinesis Data Analytics for SQL 將不再提供支援。如需詳細資訊,請參閱Amazon Kinesis Data Analytics for SQL 應用程式終止。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
串流資料作業:串流聯結
您可以在應用程式中擁有多個應用程式內串流。您可以撰寫 JOIN 查詢來關聯到達這些串流的資料。舉例來說,假設您有以下應用程式內串流。
-
OrderStream:接收正在下達的庫存訂單。
(orderIdSqlType, tickerSqlType, amountSqlType, ROWTIME TimeStamp) -
TradeStream:接收這些訂單所產生的股票交易。
(tradeIdSqlType, 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;