스트리밍 소스 요소를 SQL 입력 열에 매핑하기 - Amazon Kinesis Data Analytics for SQL Applications 개발자 안내서

신중한 고려 끝에 두 단계로 Amazon Kinesis Data Analytics for SQL applications를 중단하기로 결정했습니다.

1. 2025년 10월 15일부터 SQL 애플리케이션을 위한 새 Kinesis Data Analytics를 생성할 수 없습니다.

2. 2026년 1월 27일부터 애플리케이션이 삭제됩니다. SQL 애플리케이션용 Amazon Kinesis Data Analytics를 시작하거나 작동할 수 없습니다. 해당 시점부터 에 대한 Amazon Kinesis Data AnalyticsSQL에 대한 지원을 더 이상 사용할 수 없습니다. 자세한 내용은 Amazon Kinesis Data Analytics for SQL Applications 중단 단원을 참조하십시오.

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

스트리밍 소스 요소를 SQL 입력 열에 매핑하기

참고

2023년 9월 12일 이후에는 Kinesis Data Analytics for SQL의 기존 사용자가 아닌 경우, Kinesis Data Firehose를 소스로 사용하여 새 애플리케이션을 생성할 수 없습니다. 자세한 설명은 한도를 참조하세요.

Amazon Kinesis Data Analytics에서는 표준 SQL을 사용하여 JSON 또는 CSV 형식의 스트리밍 데이터를 처리하고 분석할 수 있습니다.

  • 스트리밍 CSV 데이터를 처리하고 분석하려면 입력 스트림의 열에 대해 열 명칭과 데이터 유형을 할당합니다. 애플리케이션이 입력 스트림에서 열 정의에 따라 순서대로 열을 하나씩 가져옵니다.

    애플리케이션 입력 스트림에 있는 열을 모두 포함할 필요는 없지만 소스 스트림에서 열을 건너뛸 수는 없습니다. 예를 들어, 5개 요소를 포함하는 입력 스트림으로부터 첫 3개 열을 가져올 수 있으나 1번, 2번 및 4번 열만을 가져올 수는 없습니다.

  • 스트리밍 JSON 데이터를 처리하고 분석하려면 JSONPath 표현식을 사용하여 JSON 요소를 스트리밍 소스로부터 입력 스트림의 SQL 열로 매핑합니다. Amazon Kinesis Data Analytics에서 JSONPath을 사용하는 방법은 JSONPath로 작업하기을 참조하십시오. SQL 표에 있는 열은 JSON 유형으로부터 매핑된 데이터 유형을 가집니다. 지원되는 데이터 유형은 데이터 유형 섹션을 참조하십시오. JSON 데이터의 SQL 데이터 변환에 관한 상세 내용은 JSON 데이터 유형을 SQL 데이터 유형으로 매핑하기 섹션을 참조하십시오.

입력 스트림 구성 방법에 관한 자세한 정보는 애플리케이션 입력 구성 섹션을 참조하십시오.

JSON 데이터를 SQL 열에 매핑하기

AWS Management Console 또는 Kinesis Data Analytics API를 사용하여 JSON 요소를 입력 열에 매핑할 수 있습니다.

  • 콘솔을 사용하여 요소를 열에 매핑하는 방법은 스키마 편집기로 작업을 참조하십시오.

  • Kinesis Data Analytics API를 사용하여 요소를 열에 매핑하는 방법은 다음 섹션을 참조하십시오.

JSON 요소를 애플리케이션 내 입력 스트림에 있는 열에 매핑하려면 각 열에 대해 다음의 정보가 스키마에 필요합니다.

  • 소스 표현식: 열의 데이터 위치를 식별하는 JSONPath 식입니다.

  • 열 명칭: SQL 쿼리에서 데이터를 참조하는 데 사용하는 명칭입니다.

  • 데이터 형식: 열의 SQL 데이터 형식입니다.

API 사용

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

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

RecordColumn 객체에 있는 필드는 다음의 값을 가집니다.

  • Mapping: 입력 스트림에서 데이터의 위치를 식별하는 JSONPath 표현식입니다. CSV 형식의 소스 스트림에 대한 입력 스키마의 경우는 이 값이 존재하지 않습니다.

  • Name: 애플리케이션 내 SQL 데이터 스트림에 있는 열의 명칭입니다.

  • SqlType: 애플리케이션 내 SQL 데이터 스트림에 있는 데이터의 유형입니다.

JSON 입력 스키마 예

다음 예는 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 입력 스키마 예

다음 예는 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 데이터 유형으로 매핑하기

JSON 데이터 유형은 애플리케이션의 입력 스키마에 따라 상응하는 SQL 데이터 유형으로 변환됩니다. 지원되는 SQL 데이터 형식에 관한 자세한 설명은 데이터 유형을 참조하십시오. Amazon Kinesis Data Analytics는 다음 규칙에 따라 JSON 데이터 유형을 SQL 데이터 유형으로 변환합니다.

Null 리터럴

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

부울 리터럴

JSON 입력 스트림에 있는 부울 리터럴("Contacted":true)은 다음과 같이 SQL 데이터로 변환됩니다.

  • 숫자(DECIMAL, INT 등): true는 1로, false는 0으로 변환.

  • 이진수(BINARY 또는 VARBINARY):

    • true: 결과는 가장 낮은 비트 세트를 가지며 남은 비트는 정리됩니다.

    • false: 결과의 모든 비트가 정리됩니다.

    VARBINARY로 변환하면 길이가 1바이트인 값이 도출됩니다.

  • 부울: 상응하는 SQL 부울 값으로 변환됩니다.

  • 문자(CHAR 또는 VARCHAR): 상응하는 문자열 값으로 변환됩니다(true 또는 false). 값은 필드의 길이에 맞게 잘립니다.

  • 날짜/시간(DATE, TIME 또는 TIMESTAMP): 변환이 실패하면 강제 변환 오류가 오류 스트림에 기록됩니다.

숫자

JSON 입력 스트림에 있는 숫자 리터럴("CustomerId":67321)은 다음과 같이 SQL 데이터로 변환됩니다.

  • 숫자(DECIMAL, INT 등): 직접 변환됩니다. 변환된 값이 대상 데이터 유형의 크기 또는 정밀도를 초과하는 경우(즉, 123.4를 INT로 변환하는 경우), 변환이 실패하고 강제 변환 오류가 오류 스트림에 기록됩니다.

  • 이진수(BINARY 또는 VARBINARY): 변환이 실패하고 강제 변환 오류가 오류 스트림에 기록됩니다.

  • BOOLEAN:

    • 0: false로 변환됩니다.

    • 기타 모든 수: true로 변환됩니다.

  • 문자(CHAR 또는 VARCHAR): 숫자의 문자열 표현으로 변환됩니다.

  • 날짜/시간(DATE, TIME 또는 TIMESTAMP): 변환이 실패하면 강제 변환 오류가 오류 스트림에 기록됩니다.

String

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"

어레이 또는 객체

JSON 입력 스트림에 있는 어레이 또는 객체가 다음과 같이 SQL 데이터로 변환됩니다.

  • 문자(CHAR 또는 VARCHAR): 어레이 또는 객체의 소스 텍스트로 변환됩니다. 배열 액세스 섹션을 참조하십시오.

  • 기타 모든 데이터 유형: 변환이 실패하고 강제 변환 오류가 오류 스트림에 기록됩니다.

JSON 어레이의 예는 JSONPath로 작업하기를 참조하십시오.

관련 항목