

신중한 고려 끝에 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`에 있는 레코드를 방출하는(또는 그 반대) 내부 조인입니다. 외부 조인을 사용하면 또 다른 흥미로운 시나리오를 만들 수 있습니다. 주식 주문이 이루어진 후 동일한 윈도우 내에 체결된 매매가 없는 주식 주문과 동일한 윈도우 내에 있지만 다른 주문에 대해 체결된 매매가 보고되도록 원한다고 가정해 보겠습니다. 다음은 *외부 조인*의 예입니다.

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