

신중한 고려 끝에 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) 단원을 참조하십시오.

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 스트리밍 소스 요소를 SQL 입력 열에 매핑하기
<a name="sch-mapping"></a>

**참고**  
2023년 9월 12일 이후에는 Kinesis Data Analytics for SQL의 기존 사용자가 아닌 경우, Kinesis Data Firehose를 소스로 사용하여 새 애플리케이션을 생성할 수 없습니다. 자세한 설명은 [한도](https://docs.aws.amazon.com//kinesisanalytics/latest/dev/limits.html)를 참조하십시오.

Amazon Kinesis Data Analytics에서는 표준 SQL을 사용하여 JSON 또는 CSV 형식의 스트리밍 데이터를 처리하고 분석할 수 있습니다.
+ 스트리밍 CSV 데이터를 처리하고 분석하려면 입력 스트림의 열에 대해 열 명칭과 데이터 유형을 할당합니다. 애플리케이션이 입력 스트림에서 열 정의에 따라 순서대로 열을 하나씩 가져옵니다.

  애플리케이션 입력 스트림에 있는 열을 모두 포함할 필요는 없지만 소스 스트림에서 열을 건너뛸 수는 없습니다. 예를 들어, 5개 요소를 포함하는 입력 스트림으로부터 첫 3개 열을 가져올 수 있으나 1번, 2번 및 4번 열만을 가져올 수는 없습니다.
+ 스트리밍 JSON 데이터를 처리하고 분석하려면 JSONPath 표현식을 사용하여 JSON 요소를 스트리밍 소스로부터 입력 스트림의 SQL 열로 매핑합니다. Amazon Kinesis Data Analytics에서 JSONPath을 사용하는 방법은 [JSONPath로 작업하기](about-json-path.md)을 참조하십시오. SQL 표에 있는 열은 JSON 유형으로부터 매핑된 데이터 유형을 가집니다. 지원되는 데이터 유형은 [데이터 유형](https://docs.aws.amazon.com/kinesisanalytics/latest/sqlref/sql-reference-data-types.html) 섹션을 참조하십시오. JSON 데이터의 SQL 데이터 변환에 관한 상세 내용은 [JSON 데이터 유형을 SQL 데이터 유형으로 매핑하기](#sch-mapping-datatypes) 섹션을 참조하십시오.

입력 스트림 구성 방법에 관한 자세한 정보는 [애플리케이션 입력 구성](how-it-works-input.md) 섹션을 참조하십시오.

## JSON 데이터를 SQL 열에 매핑하기
<a name="sch-mapping-json"></a>

 AWS Management Console 또는 Kinesis Data Analytics API를 사용하여 JSON 요소를 입력 열에 매핑할 수 있습니다.
+ 콘솔을 사용하여 요소를 열에 매핑하는 방법은 [스키마 편집기로 작업](console-summary-edit-schema.md)을 참조하십시오.
+ Kinesis Data Analytics API를 사용하여 요소를 열에 매핑하는 방법은 다음 섹션을 참조하십시오.

JSON 요소를 애플리케이션 내 입력 스트림에 있는 열에 매핑하려면 각 열에 대해 다음의 정보가 스키마에 필요합니다.
+ **소스 표현식:** 열의 데이터 위치를 식별하는 JSONPath 식입니다.
+ **열 명칭:** SQL 쿼리에서 데이터를 참조하는 데 사용하는 명칭입니다.
+ **데이터 형식: **열의 SQL 데이터 형식입니다.

## API 사용
<a name="sf-map-api"></a>

스트리밍 소스의 요소를 입력 열로 매핑할 때 Kinesis Data Analytics API [CreateApplication](API_CreateApplication.md) 작업을 사용할 수 있습니다. 애플리케이션 내 스트림을 생성하기 위해서는 SQL에 사용되는 스키마화된 버전으로 데이터를 변환할 스키마를 지정합니다. [CreateApplication](API_CreateApplication.md) 작업은 단일 스트리밍 소스로부터 입력을 수신하도록 애플리케이션을 구성합니다. JSON 요소 또는 CSV 열을 SQL 열로 매핑하려면 [SourceSchema](API_SourceSchema.md) `RecordColumns` 어레이에서 [RecordColumn](API_RecordColumn.md)을 생성합니다. [RecordColumn](API_RecordColumn.md) 객체에는 다음의 스키마가 있습니다.

```
{ 
    "Mapping": "String",
    "Name": "String",
    "SqlType": "String"
}
```

[RecordColumn](API_RecordColumn.md) 객체에 있는 필드는 다음의 값을 가집니다.
+ `Mapping`: 입력 스트림에서 데이터의 위치를 식별하는 JSONPath 표현식입니다. CSV 형식의 소스 스트림에 대한 입력 스키마의 경우는 이 값이 존재하지 않습니다.
+ `Name`: 애플리케이션 내 SQL 데이터 스트림에 있는 열의 명칭입니다.
+ `SqlType`: 애플리케이션 내 SQL 데이터 스트림에 있는 데이터의 유형입니다.

### JSON 입력 스키마 예
<a name="sf-map-api-json-example"></a>

다음 예는 JSON 스키마에 대한 `InputSchema` 값의 형식을 보여 줍니다.

```
"InputSchema": {
    "RecordColumns": [
        {
            "SqlType": "VARCHAR(4)",
            "Name": "TICKER_SYMBOL",
            "Mapping": "$.TICKER_SYMBOL"
        },
        {
            "SqlType": "VARCHAR(16)",
            "Name": "SECTOR",
            "Mapping": "$.SECTOR"
        },
        {
            "SqlType": "TINYINT",
            "Name": "CHANGE",
            "Mapping": "$.CHANGE"
        },
        {
            "SqlType": "DECIMAL(5,2)",
            "Name": "PRICE",
            "Mapping": "$.PRICE"
        }
    ],
    "RecordFormat": {
        "MappingParameters": {
            "JSONMappingParameters": {
                "RecordRowPath": "$"
            }
        },
        "RecordFormatType": "JSON"
    },
    "RecordEncoding": "UTF-8"
}
```

### CSV 입력 스키마 예
<a name="sf-map-api-csv-example"></a>

다음 예는 CSV(쉼표로 분리된 값) 형식 스키마에 대한 `InputSchema` 값의 형식을 보여 줍니다.

```
"InputSchema": {
    "RecordColumns": [
        {
            "SqlType": "VARCHAR(16)",
            "Name": "LastName"
        },
        {
            "SqlType": "VARCHAR(16)",
            "Name": "FirstName"
        },
        {
            "SqlType": "INTEGER",
             "Name": "CustomerId"
        }
    ],
    "RecordFormat": {
        "MappingParameters": {
            "CSVMappingParameters": {
                "RecordColumnDelimiter": ",",
                "RecordRowDelimiter": "\n"
            }
        },
        "RecordFormatType": "CSV"
    },
    "RecordEncoding": "UTF-8"
}
```

## JSON 데이터 유형을 SQL 데이터 유형으로 매핑하기
<a name="sch-mapping-datatypes"></a>

JSON 데이터 유형은 애플리케이션의 입력 스키마에 따라 상응하는 SQL 데이터 유형으로 변환됩니다. 지원되는 SQL 데이터 형식에 관한 자세한 설명은 [데이터 유형](https://docs.aws.amazon.com/kinesisanalytics/latest/sqlref/sql-reference-data-types.html)을 참조하십시오. Amazon Kinesis Data Analytics는 다음 규칙에 따라 JSON 데이터 유형을 SQL 데이터 유형으로 변환합니다.

### Null 리터럴
<a name="sch-mapping-datatypes-null"></a>

JSON 입력 스트림에 있는 null 리터럴(`"City":null`)은 대상의 데이터 유형에 상관없이 SQL null로 변환됩니다.

### 부울 리터럴
<a name="sch-mapping-datatypes-boolean"></a>

JSON 입력 스트림에 있는 부울 리터럴(`"Contacted":true`)은 다음과 같이 SQL 데이터로 변환됩니다.
+ 숫자(DECIMAL, INT 등): `true`는 1로, `false`는 0으로 변환.
+ 이진수(BINARY 또는 VARBINARY): 
  + `true`: 결과는 가장 낮은 비트 세트를 가지며 남은 비트는 정리됩니다.
  + `false`: 결과의 모든 비트가 정리됩니다.

  VARBINARY로 변환하면 길이가 1바이트인 값이 도출됩니다.
+ 부울: 상응하는 SQL 부울 값으로 변환됩니다.
+ 문자(CHAR 또는 VARCHAR): 상응하는 문자열 값으로 변환됩니다(`true` 또는 `false`). 값은 필드의 길이에 맞게 잘립니다.
+ 날짜/시간(DATE, TIME 또는 TIMESTAMP): 변환이 실패하면 강제 변환 오류가 오류 스트림에 기록됩니다.

### 숫자
<a name="sch-mapping-datatypes-number"></a>

JSON 입력 스트림에 있는 숫자 리터럴(`"CustomerId":67321`)은 다음과 같이 SQL 데이터로 변환됩니다.
+ 숫자(DECIMAL, INT 등): 직접 변환됩니다. 변환된 값이 대상 데이터 유형의 크기 또는 정밀도를 초과하는 경우(즉, `123.4`를 INT로 변환하는 경우), 변환이 실패하고 강제 변환 오류가 오류 스트림에 기록됩니다.
+ 이진수(BINARY 또는 VARBINARY): 변환이 실패하고 강제 변환 오류가 오류 스트림에 기록됩니다.
+ BOOLEAN: 
  + `0`: `false`로 변환됩니다.
  + 기타 모든 수: `true`로 변환됩니다.
+ 문자(CHAR 또는 VARCHAR): 숫자의 문자열 표현으로 변환됩니다.
+ 날짜/시간(DATE, TIME 또는 TIMESTAMP): 변환이 실패하면 강제 변환 오류가 오류 스트림에 기록됩니다.

### 문자열
<a name="sch-mapping-datatypes-string"></a>

JSON 입력 스트림에 있는 문자열 값(`"CustomerName":"John Doe"`)은 다음과 같이 SQL 데이터로 변환됩니다.
+ 수치(DECIMAL, INT 등): Amazon Kinesis Data Analytics는 값을 대상 데이터 유형으로 변환합니다. 값을 변환할 수 없는 경우, 변환이 실패하고 강제 변환 오류가 오류 스트림에 기록됩니다.
+ 이진수(BINARY 또는 VARBINARY): 소스 스트링이 유효한 이진 리터럴(즉, 짝수 f를 지닌 `X'3F67A23A'`)인 경우 값은 대상 데이터 유형으로 변환됩니다. 그렇지 않은 경우 변환이 실패하고 강제 변환 오류가 오류 스트림에 기록됩니다.
+ 부울: 소스 스트링이 `"true"`인 경우, `true`로 변환됩니다. 이 비교는 대/소문자를 구분하지 않습니다. 그렇지 않은 경우, `false`로 변환됩니다.
+ 문자(CHAR 또는 VARCHAR): 입력에서 문자열 값으로 변환됩니다. 값이 대상 데이터 유형보다 더 긴 경우, 잘려지고 오류 스트림에 오류가 기록되지 않습니다.
+ 날짜/시간(DATE, TIME 또는 TIMESTAMP): 소스 스트링이 대상 값으로 변환할 수 있는 형식인 경우 값은 변환됩니다. 그렇지 않은 경우 변환이 실패하고 강제 변환 오류가 오류 스트림에 기록됩니다.

  유효한 날짜/시간 형식은 다음과 같습니다.
  + "1992-02-14"
  + "1992-02-14 18:35:44.0"

### 어레이 또는 객체
<a name="sch-mapping-datatypes-array"></a>

JSON 입력 스트림에 있는 어레이 또는 객체가 다음과 같이 SQL 데이터로 변환됩니다.
+ 문자(CHAR 또는 VARCHAR): 어레이 또는 객체의 소스 텍스트로 변환됩니다. [배열 액세스](about-json-path.md#about-json-path-arrays) 섹션을 참조하십시오.
+ 기타 모든 데이터 유형: 변환이 실패하고 강제 변환 오류가 오류 스트림에 기록됩니다.

JSON 어레이의 예는 [JSONPath로 작업하기](about-json-path.md)를 참조하십시오.

## 관련 항목
<a name="sch-mapping.Related"></a>
+ [애플리케이션 입력 구성](how-it-works-input.md)
+ [데이터 형식](https://docs.aws.amazon.com/kinesisanalytics/latest/sqlref/sql-reference-data-types.html)
+ [스키마 편집기로 작업](console-summary-edit-schema.md)
+ [CreateApplication](API_CreateApplication.md)
+ [RecordColumn](API_RecordColumn.md)
+ [SourceSchema](API_SourceSchema.md)