OBJECT_TRANSFORM 함수 - Amazon Redshift

OBJECT_TRANSFORM 함수

SUPER 객체를 변환합니다.

구문

OBJECT_TRANSFORM( input [KEEP path1, ...] [SET path1, value1, ..., ... ] )

인수

입력

SUPER 유형 객체로 해석되는 식입니다.

KEEP

이 절에 지정된 모든 경로 값이 유지되고 출력 객체로 전달됩니다.

이 절은 선택 사항입니다.

path1, path2, ...

마침표로 구분되고 큰따옴표로 묶인 경로 구성 요소 형식의 상수 문자열 리터럴입니다. 예를 들어, '"a"."b"."c"'는 유효한 경로 값입니다. 이는 KEEP 절과 SET 절의 경로 파라미터에 적용됩니다.

SET

경로와 값 쌍을 사용하여 기존 경로를 수정하거나 새 경로를 추가하고 출력 객체에 해당 경로의 값을 설정합니다.

이 절은 선택 사항입니다.

value1, value2, ...

SUPER 유형 값으로 해석되는 식입니다. 참고로 숫자, 텍스트, 부울 유형은 SUPER로 해석할 수 있습니다.

반환 타입

SUPER

사용 노트

OBJECT_TRANSFORM은 KEEP에 지정된 입력의 경로 값과 SET에 지정된 경로 및 값 쌍을 포함하는 SUPER 유형 객체를 반환합니다.

KEEP과 SET가 모두 비어 있는 경우 OBJECT_TRANSFORM은 입력을 반환합니다.

입력이 SUPER 유형 객체가 아닌 경우 OBJECT_TRANSFORM은 KEEP 또는 SET 값과 관계없이 입력을 반환합니다.

다음 예시에서는 SUPER 객체를 다른 SUPER 객체로 변환합니다.

CREATE TABLE employees ( col_person SUPER ); INSERT INTO employees VALUES ( json_parse(' { "name": { "first": "John", "last": "Doe" }, "age": 25, "ssn": "111-22-3333", "company": "Company Inc.", "country": "U.S." } ') ), ( json_parse(' { "name": { "first": "Jane", "last": "Appleseed" }, "age": 34, "ssn": "444-55-7777", "company": "Organization Org.", "country": "Ukraine" } ') ) ; SELECT OBJECT_TRANSFORM( col_person KEEP '"name"."first"', '"age"', '"company"', '"country"' SET '"name"."first"', UPPER(col_person.name.first::TEXT), '"age"', col_person.age + 5, '"company"', 'Amazon' ) AS col_person_transformed FROM employees; --This result is formatted for ease of reading. col_person_transformed ------------------------------------------------------------- { "name": { "first": "JOHN" }, "age": 30, "company": "Amazon", "country": "U.S." } { "name": { "first": "JANE" }, "age": 39, "company": "Amazon", "country": "Ukraine" }