스트리밍 소스 요소를 SQL 입력 열에 매핑하기 - SQL 애플리케이션용 Amazon Kinesis Data Analytics 개발자 안내서

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

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

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

  • 스트리밍 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를 사용할 수 있습니다.CreateApplicationaction. 인애플리케이션 스트림을 생성하기 위해서는 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 등): true1로 변환;false는 0으로 변환됩니다.

  • 이진수(BINARY 또는 VARBINARY):

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

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

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

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

  • 문자 (문자 또는 VARCHAR): 해당 문자열 값 (true또는false). 값은 필드의 길이에 맞게 잘립니다.

  • 날짜/시간 (날짜, 시간 또는 타임스탬프): 변환이 실패하고 강제 변환 오류가 오류 스트림에 기록됩니다.

Number

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

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

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

  • BOOLEAN:

    • 0: 로 변환됩니다.false를 선택합니다.

    • 기타 모든 수: 로 변환됩니다.true를 선택합니다.

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

  • 날짜/시간 (날짜, 시간 또는 타임스탬프): 변환이 실패하고 강제 변환 오류가 오류 스트림에 기록됩니다.

String

JSON 입력 스트림에 있는 문자열 값("CustomerName":"John Doe")은 다음과 같이 SQL 데이터로 변환됩니다.

  • 숫자 (DECIMAL, INT 등): Amazon Kinesis Data Analytics 값을 대상 데이터 유형으로 변환합니다. 값을 변환할 수 없는 경우, 변환이 실패하고 강제 변환 오류가 오류 스트림에 기록됩니다.

  • 이진수(BINARY 또는 VARBINARY): 소스 문자열이 유효한 이진 리터럴 (즉,X'3F67A23A'짝수 f를 지닌) 값이 대상 데이터 유형으로 변환됩니다. 그렇지 않은 경우 변환이 실패하고 강제 변환 오류가 오류 스트림에 기록됩니다.

  • BOOLEAN: 소스 스트링이"true"로 변환됩니다.true를 선택합니다. 이 비교는 대/소문자를 구분하지 않습니다. 그렇지 않은 경우, false로 변환됩니다.

  • 문자 (문자 또는 VARCHAR): 입력에서 문자열 값으로 변환됩니다. 값이 대상 데이터 유형보다 더 긴 경우, 잘려지고 오류 스트림에 오류가 기록되지 않습니다.

  • 날짜/시간 (날짜, 시간 또는 타임스탬프): 소스 스트링이 대상 값으로 변환할 수 있는 형식인 경우 값은 변환됩니다. 그렇지 않은 경우 변환이 실패하고 강제 변환 오류가 오류 스트림에 기록됩니다.

    유효한 날짜/시간 형식은 다음과 같습니다.

    • "1992-02-14"

    • "1992-02-14 18:35:44.0"

어레이 또는 객체

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

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

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

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

관련 주제