3.5.4.3. S3 JSON 구문 분석
JSON 문서를 사용하면 제한 없이 개체 또는 배열 내에 값을 중첩할 수 있습니다. S3 선택 엔진의 JSON 문서의 특정 값을 쿼리할 때 값의 위치는 SELECT 문의 경로를 통해 지정됩니다.
JSON 문서의 일반 구조에는 CSV 및 Parquet와 같은 행 및 열 구조가 없습니다. 대신 JSON 문서를 쿼리할 때 행과 열을 정의하는 SQL 문 자체입니다.
S3 Select 엔진의 JSON 구문 분석기는 다음과 같이 S3 개체를 구문 분석합니다.
-
SELECT문의FROM절은 행 경계를 정의합니다. - JSON 문서의 행은 CSV 개체에 대한 행을 정의하는 데 행 구분 기호를 사용하는 방법 및 Parquet 오브젝트에 대한 행을 정의하는 데 사용되는 방법과 유사합니다.
다음 예제를 고려하십시오.
예
{ "firstName": "Joe", "lastName": "Jackson", "gender": "male", "age": "twenty" }, { "firstName": "Joe_2", "lastName": "Jackson_2", "gender": "male", "age": 21 }, "phoneNumbers": [ { "type": "home1", "number": "734928_1","addr": 11 }, { "type": "home2", "number": "734928_2","addr": 22 } ], "key_after_array": "XXX", "description" : { "main_desc" : "value_1", "second_desc" : "value_2" } # the from-clause define a single row. # _1 points to root object level. # _1.age appears twice in Documnet-row, the last value is used for the operation. query = "select _1.firstname,_1.key_after_array,_1.age+4,_1.description.main_desc,_1.description.second_desc from s3object[*].aa.bb.cc;"; expected_result = Joe_2,XXX,25,value_1,value_2-
이 설명은 리더에게
aa.bb.cc경로를 검색하고 이 경로의 발생에 따라 행 경계를 정의하도록 지시합니다. -
행은 독자가 경로에 직면할 때 시작되고, 리더가 경로의 가장 내부 부분을 종료할 때 종료됩니다. 이 경우 오브젝트
cc입니다.
-
이 설명은 리더에게