

신중한 고려 끝에 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="tumbling-window-concepts"></a>

윈도우 모드 쿼리가 비중첩 방식으로 각 윈도우를 처리하는 경우 이 윈도우를 *텀블링 윈도우*라고 합니다. 이 경우 애플리케이션 내 스트림의 각 레코드는 특정 윈도우에 속합니다. 쿼리가 레코드가 속한 윈도우를 처리할 때 한 번만 처리됩니다.

![\[Timeline showing non-overlapping windows processing data streams at distinct time intervals.\]](http://docs.aws.amazon.com/ko_kr/kinesisanalytics/latest/dev/images/window-tumbling-20.png)


예를 들어, `GROUP BY` 절을 사용한 집계 퀴리는 텀블링 윈도우 내에 있는 행을 처리합니다. [시작하기 실습](https://docs.aws.amazon.com/kinesisanalytics/latest/dev/get-started-exercise.html)의 데모 스트림은 애플리케이션의 애플리케이션 내 스트림(`SOURCE_SQL_STREAM_001`)으로 매핑되는 주가 데이터를 수신합니다. 이 스트림의 스키마는 다음과 같습니다.

```
(TICKER_SYMBOL VARCHAR(4), 
 SECTOR varchar(16), 
 CHANGE REAL, 
 PRICE REAL)
```

애플리케이션 코드에서 1분 윈도우에 대해 티커 별로 집계(최소, 최대) 가격을 찾고자 한다고 가정해 보겠습니다. 다음 쿼리를 사용할 수 있습니다.

```
SELECT STREAM ROWTIME,
              Ticker_Symbol,
              MIN(Price) AS Price,
              MAX(Price) AS Price
FROM     "SOURCE_SQL_STREAM_001"
GROUP BY Ticker_Symbol, 
         STEP("SOURCE_SQL_STREAM_001".ROWTIME BY INTERVAL '60' SECOND);
```

앞의 예는 시간 기반 윈도우 모드 쿼리의 예입니다. 이 쿼리에서는 `ROWTIME` 값을 기준으로 레코드를 그룹화합니다. 분 기준 보고의 경우 `STEP` 함수는 `ROWTIME` 값을 가장 가까운 분으로 내림합니다.

**참고**  
`FLOOR` 함수를 사용하여 레코드를 윈도우로 그룹화할 수도 있습니다. 그러나 함수를 사용하여 레코드를 윈도우로 그룹화할 수도 있지만, `FLOOR`는 시간 값을 전체 시간 단위(시, 분, 초 등)로만 내림할 수 있습니다. `STEP`은 값을 임의의 간격(예: 30초)으로 내림할 수 있으므로 레코드를 텀블링 윈도우로 그룹화하려는 경우에 권장됩니다.

이 쿼리는 비중첩(텀블링) 윈도우의 예입니다. 1분 윈도우에 있는 `GROUP BY` 절 그룹 레코드와 각 레코드는 특정 윈도우(비중첩)에 속합니다. 쿼리는 분당 하나의 출력 레코드를 방출하여 특정 분에서 기록되는 최소/최대 티커 가격을 제공합니다. 이런 유형의 쿼리는 입력 데이터 스트림으로부터 주기적 보고서를 생성하는 데 유용합니다. 이 예에서는 1분마다 보고서가 생성됩니다.

**쿼리 테스트 방법**

1. [시작하기 실습](https://docs.aws.amazon.com/kinesisanalytics/latest/dev/get-started-exercise.html)에 따라 애플리케이션을 설정합니다.

1. 애플리케이션 코드에서 `SELECT` 문을 앞의 `SELECT` 쿼리로 바꿉니다. 그러면 애플리케이션 코드가 다음과 같을 것입니다.

   ```
   CREATE OR REPLACE STREAM "DESTINATION_SQL_STREAM" (
                                      ticker_symbol VARCHAR(4), 
                                      Min_Price     DOUBLE, 
                                      Max_Price     DOUBLE);
   -- CREATE OR REPLACE PUMP to insert into output
   CREATE OR REPLACE PUMP "STREAM_PUMP" AS 
     INSERT INTO "DESTINATION_SQL_STREAM" 
       SELECT STREAM Ticker_Symbol,
                     MIN(Price) AS Min_Price,
                     MAX(Price) AS Max_Price
       FROM    "SOURCE_SQL_STREAM_001"
       GROUP BY Ticker_Symbol, 
                STEP("SOURCE_SQL_STREAM_001".ROWTIME BY INTERVAL '60' SECOND);
   ```