

慎重に検討した結果、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 アプリケーションのサポート終了](discontinuation.md)」を参照してください。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# ストリーミングデータオペレーション: ストリーム結合
<a name="stream-joins-concepts"></a>

アプリケーションに複数のアプリケーション内ストリームを指定できます。これらストリームに届くデータを関連付ける `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: 注文が出されてから 1 分以内に取引があった注文をレポートする
<a name="join-ex1"></a>

この例では、クエリは `OrderStream` と `TradeStream` の両方を結合します。ただし、注文から 1 分で発生した取引のみが必要であるため、クエリで `TradeStream` に対して 1 分ウィンドウを定義します。ウィンドウクエリについては、「[スライディングウィンドウ](sliding-window-concepts.md)」を参照してください。

```
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 分ウィンドウ内で取引があれば、アプリケーションで出力が発行されます。

前述のクエリでの結合は内部結合であり、クエリは `TradeStream` に一致するレコードがある `OrderStream` のレコードを発行します (逆も同様です)。外部結合を使用すると、別の興味深いシナリオを作成できます。株注文が発注されてから 1 分以内に取引がない株注文と、同じウィンドウでレポートされた別の注文に対する取引を指定するとします。これは、*外部結合*の例です。

```
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;
```