

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

*스태거 윈도우*를 사용하는 것은 일관성 없는 시간에 도착하는 데이터 그룹을 분석하는 데 적합한 윈도우 배치 방법입니다. 이 방법은 관련 판매나 로그 기록 모음 같은 시계열 분석 사용 사례에 적합합니다.

예를 들어, [VPC 플로우 로그](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html#flow-logs-limitations)에는 약 10분의 캡처 윈도우가 있습니다. 그러나 클라이언트에서 데이터를 수집하는 경우 최대 15분의 캡처 윈도우가 있습니다. 스태거 윈도우는 분석을 위해 이러한 로그를 집계할 때 아주 유용한 방법입니다.

스태거 윈도우를 사용하면 텀블링 윈도우를 사용할 때처럼 관련 데이터가 같은 시간 제한 윈도우에 속하지 않는 문제가 발생하지 않습니다.

## 텀블링 윈도우를 이용할 때의 부분적 결과
<a name="stagger-window-tumbling"></a>

지연되거나 순서가 맞지 않는 데이터에 대해 [텀블링 윈도우](tumbling-window-concepts.md)을(를) 이용할 때는 몇 가지 제한 사항이 있습니다.

텀블링 윈도우를 사용하여 시간 관련 데이터 그룹을 분석하면 개별 레코드가 별도의 윈도우로 나뉠 수 있습니다. 따라서 각 윈도우에서의 부분 결과는 나중에 결합되어 각 레코드 그룹에 대한 완전한 결과를 산출해야 합니다.

다음 텀블링 윈도우 쿼리에서 레코드는 행 시간, 이벤트 시간 및 티커 기호를 기준으로 윈도우로 그룹화됩니다.

```
CREATE OR REPLACE STREAM "DESTINATION_SQL_STREAM" (
    TICKER_SYMBOL VARCHAR(4),
    EVENT_TIME timestamp,
    TICKER_COUNT     DOUBLE);

CREATE OR REPLACE PUMP "STREAM_PUMP" AS 
  INSERT INTO "DESTINATION_SQL_STREAM" 
    SELECT STREAM 
        TICKER_SYMBOL,
        FLOOR(EVENT_TIME TO MINUTE),
        COUNT(TICKER_SYMBOL) AS TICKER_COUNT
    FROM "SOURCE_SQL_STREAM_001"
    GROUP BY ticker_symbol, FLOOR(EVENT_TIME TO MINUTE), STEP("SOURCE_SQL_STREAM_001".ROWTIME BY INTERVAL '1' MINUTE);
```

다음 그림에서 애플리케이션은 1분 단위의 거래 발생 시간(이벤트 시간)을 기준으로, 자신이 수신한 거래의 수를 계산합니다. 애플리케이션은 텀블링 윈도우를 이용해 행 시간과 이벤트 시간을 기준으로 데이터를 그룹화할 수 있습니다. 애플리케이션은 레코드 4개를 수신하며 각 레코드는 이전 레코드 수신으로부터 1분 안에 도착합니다. 행 시간, 이벤트 시간 및 티커 기호를 기준으로 레코드를 그룹화합니다. 일부 레코드는 첫 번째 텀블링 윈도우가 끝난 후 도착하며, 따라서 모든 레코드가 같은 1분 텀블링 윈도우에 속하지는 않습니다.

![\[Tumbling windows diagram showing data grouping by row time, event time, and ticker symbol over two minutes.\]](http://docs.aws.amazon.com/ko_kr/kinesisanalytics/latest/dev/images/stagger_0.png)


앞의 그림에는 다음과 같은 이벤트가 존재합니다.


****  

| ROWTIME | EVENT\$1TIME | TICKER\$1SYMBOL | 
| --- | --- | --- | 
| 11:00:20 | 11:00:10 | AMZN | 
| 11:00:30 | 11:00:20 | AMZN | 
| 11:01:05 | 11:00:55 | AMZN | 
| 11:01:15 | 11:01:05 | AMZN | 

텀블링 윈도우 애플리케이션의 결과 모음은 다음처럼 표시됩니다.


****  

| ROWTIME | EVENT\$1TIME | TICKER\$1SYMBOL | COUNT | 
| --- | --- | --- | --- | 
| 11:01:00 | 11:00:00 | AMZN | 2  | 
| 11:02:00 | 11:00:00 | AMZN | 1  | 
| 11:02:00 | 11:01:00 | AMZN | 1  | 

앞의 결과 세트에서는 3가지 결과가 반환됩니다.
+ 최초 레코드 2개를 집계하는 `ROWTIME`이 11:01:00인 레코드.
+ 3번째 레코드만 집계하는 11:02:00 시점의 레코드. 이 레코드는 두 번째 윈도우에는 `ROWTIME`이 있지만 첫 번째 윈도우에는 `EVENT_TIME`이 있습니다.
+ 4번째 레코드만 집계하는 11:02:00 시점의 레코드.

전체 결과 세트를 분석하려면, 레코드를 지속성 스토어에서 집계해야 합니다. 이렇게 되면 애플리케이션의 복잡성과 처리 요구사항이 증가합니다.

## 스태거 윈도우를 이용할 때의 전체 결과
<a name="stagger-window-concepts-stagger"></a>

시간 관련 데이터 레코드의 정확성 개선을 위해, Kinesis Data Analytics는 *스태거 윈도우*라는 새로운 윈도우 유형을 제공합니다. 이 유형의 윈도우에서는 파티션 키와 일치하는 최초 이벤트가 고정된 시간 간격과 무관하게 도착했을 때 윈도우가 열립니다. 윈도우는 윈도우가 열린 시간을 기준으로 측정하는, 지정된 기간을 기준으로 닫힙니다.

스태거 윈도우는 윈도우 절의 각 키 그룹화에 대한 별도의 시간 제한 윈도우입니다. 애플리케이션은 모든 결과에 단일 윈도우를 이용하는 대신, 자체 시간 윈도우 내 각 윈도우 절의 결과를 집계합니다.

다음 스태거 윈도우 쿼리에서 레코드는 이벤트 시간 및 티커 기호를 기준으로 윈도우로 그룹화됩니다.

```
CREATE OR REPLACE STREAM "DESTINATION_SQL_STREAM" (
    ticker_symbol    VARCHAR(4), 
    event_time       TIMESTAMP,
    ticker_count     DOUBLE);

CREATE OR REPLACE PUMP "STREAM_PUMP" AS 
  INSERT INTO "DESTINATION_SQL_STREAM" 
    SELECT STREAM 
        TICKER_SYMBOL,
        FLOOR(EVENT_TIME TO MINUTE),
        COUNT(TICKER_SYMBOL) AS ticker_count
    FROM "SOURCE_SQL_STREAM_001"
    WINDOWED BY STAGGER (
            PARTITION BY FLOOR(EVENT_TIME TO MINUTE), TICKER_SYMBOL RANGE INTERVAL '1' MINUTE);
```

다음 그림에서 이벤트는 이벤트 시간 및 티커 기호를 기준으로 스태거 창으로 집계됩니다.

![\[Diagram showing event aggregation into stagger windows by event time and ticker symbol.\]](http://docs.aws.amazon.com/ko_kr/kinesisanalytics/latest/dev/images/stagger_1.png)


앞의 그림에는 텀블링 윈도우 애플리케이션이 분석한 것과 같은 이벤트인 다음 이벤트가 존재합니다.


****  

| ROWTIME | EVENT\$1TIME | TICKER\$1SYMBOL | 
| --- | --- | --- | 
| 11:00:20 | 11:00:10 | AMZN | 
| 11:00:30 | 11:00:20 | AMZN | 
| 11:01:05 | 11:00:55 | AMZN | 
| 11:01:15 | 11:01:05 | AMZN | 

스태거 윈도우 애플리케이션의 결과 모음은 다음처럼 표시됩니다.


****  

| ROWTIME | EVENT\$1TIME | TICKER\$1SYMBOL | 개수 | 
| --- | --- | --- | --- | 
| 11:01:20 | 11:00:00 | AMZN | 3 | 
| 11:02:15 | 11:01:00 | AMZN | 1 | 

반환된 레코드는 최초 입력 레코드 3개를 집계합니다. 레코드는 1분 스태거 윈도우로 그룹화됩니다. 스태거 윈도우는 애플리케이션이 (`ROWTIME`이 11:00:20인) 첫 번째 AMZN 레코드를 수신할 때 시작됩니다. 1분 스태거 윈도우가(11:01:20에) 만료되면, (`ROWTIME` 및 `EVENT_TIME`을 기준으로 할 때) 결과가 스태거 윈도우에 속하는 레코드가 출력 스트림에 작성됩니다. 스태거 윈도우를 이용하면, `ROWTIME`과 `EVENT_TIME`이 1분 윈도우 이내인 모든 레코드가 단일 결과로 출력됩니다.

마지막 레코드(1 분 집합 외부의 `EVENT_TIME` 포함)는 별도로 집계됩니다. 이는 `EVENT_TIME`이 레코드를 결과 세트로 분리하는 데 사용되는 파티션 키 중 하나이고 첫 번째 윈도우에 대한 `EVENT_TIME`의 파티션 키가 `11:00`이기 때문입니다.

스태거 윈도우의 구문은 특수 절인 `WINDOWED BY`에서 정의됩니다. 이 절은 스트리밍 집계에서 `GROUP BY` 대신 사용합니다. 이 절은 선택 사항인 `WHERE` 절 바로 뒤, `HAVING` 절 앞에 표시됩니다.

스태거 윈도우는 `WINDOWED BY` 절에서 정의되며 파티션 키와 윈도우 길이라는 두 가지 파라미터를 취합니다. 파티션 키는 들어오는 데이터 스트림을 분할하며 윈도우가 열리는 시간을 정의합니다. 스태거 윈도우는 고유 파티션 키가 있는 첫 번째 윈도우가 스트림에 표시될 때 열립니다. 스태거 윈도우는 윈도우 길이로 정의하는 고정된 기간이 지나면 닫힙니다. 구문은 다음 코드 예에서 확인할 수 있습니다:

```
...
FROM <stream-name>
WHERE <... optional statements...>
WINDOWED BY STAGGER(
	PARTITION BY <partition key(s)>
	RANGE INTERVAL <window length, interval>
);
```