串流資料作業:串流聯結 - Amazon Kinesis Data Analytics for SQL Applications 開發人員指南

在仔細考慮之後,我們決定在兩個步驟中停止 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, ticker SqlType, amount SqlType, ROWTIME TimeStamp)
  • TradeStream— 接收這些訂單所產生的股票交易。

    (tradeId SqlType, orderId SqlType, ticker SqlType, amount SqlType, ticker SqlType, amount SqlType, ROWTIME TimeStamp)

以下是將資料關聯到這些串流的 JOIN 查詢範例。

範例 1:報告下訂單後一分鐘內有交易的訂單

在此範例中,您的查詢會同時連接 OrderStreamTradeStream。但是,由於我們只想要訂單後一分鐘下達的交易,因此查詢定義了 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;