- 카테고리:
반정형 및 정형 데이터 함수 (배열/오브젝트)
OBJECT_CONSTRUCT¶
인자에서 생성된 OBJECT 를 반환합니다.
구문¶
OBJECT_CONSTRUCT( [<key1>, <value1> [, <keyN>, <valueN> ...]] )
OBJECT_CONSTRUCT( * )
반환¶
반환된 값의 데이터 타입은 OBJECT 입니다.
사용법 노트¶
함수는 다음 중 하나를 허용합니다.
0개 이상의 키-값 페어의 시퀀스(여기서 키는 문자열이고 값은 모든 형식임).
별표. 별표와 함께 호출하는 경우, 속성 이름을 키로 사용하고 연결된 튜플 값을 값으로 사용하여 오브젝트가 구성됩니다. 아래의 예를 참조하십시오.
키 또는 값이 NULL(즉, SQL NULL)인 경우, 결과 오브젝트에서 키-값 페어가 생략됩니다. null이 아닌 문자열을 키로 구성하고 JSON NULL을 값으로(즉, PARSE_JSON(‘NULL’)) 구성하는 키-값 페어는 생략되지 않습니다.
생성된 오브젝트는 키-값 페어의 원래 순서를 반드시 보존하지는 않습니다.
많은 상황에서 OBJECT_CONSTRUCT 함수 대신 OBJECT 상수 (또는 OBJECT 리터럴 이라고도 함)를 사용할 수 있습니다.
예¶
다음은 간단한 오브젝트를 구성하는 방법을 보여줍니다.
SELECT OBJECT_CONSTRUCT('a',1,'b','BBBB', 'c',null); +----------------------------------------------+ | OBJECT_CONSTRUCT('A',1,'B','BBBB', 'C',NULL) | |----------------------------------------------| | { | | "a": 1, | | "b": "BBBB" | | } | +----------------------------------------------+
이 예는 *
를 사용하여 FROM 절에서 속성 이름과 값을 가져옵니다.
CREATE TABLE demo_table_1 (province VARCHAR, created_date DATE); INSERT INTO demo_table_1 (province, created_date) VALUES ('Manitoba', '2020-01-18'::DATE), ('Alberta', '2020-01-19'::DATE);SELECT province, created_date FROM demo_table_1 ORDER BY province; +----------+--------------+ | PROVINCE | CREATED_DATE | |----------+--------------| | Alberta | 2020-01-19 | | Manitoba | 2020-01-18 | +----------+--------------+SELECT OBJECT_CONSTRUCT(*) AS oc FROM demo_table_1 ORDER BY oc['PROVINCE']; +---------------------------------+ | OC | |---------------------------------| | { | | "CREATED_DATE": "2020-01-19", | | "PROVINCE": "Alberta" | | } | | { | | "CREATED_DATE": "2020-01-18", | | "PROVINCE": "Manitoba" | | } | +---------------------------------+
*
를 사용한 또 다른 예입니다. 이 경우, 속성 이름이 지정되지 않으므로 Snowflake는 “COLUMN1”, “COLUMN2” 등을 사용합니다.
SELECT OBJECT_CONSTRUCT(*) FROM VALUES(1,'x'), (2,'y'); +---------------------+ | OBJECT_CONSTRUCT(*) | |---------------------| | { | | "COLUMN1": 1, | | "COLUMN2": "x" | | } | | { | | "COLUMN1": 2, | | "COLUMN2": "y" | | } | +---------------------+
이 예는 SQL NULL과 문자열 ‘null’을 사용합니다.
SELECT OBJECT_CONSTRUCT('Key_One', PARSE_JSON('NULL'), 'Key_Two', NULL, 'Key_Three', 'null') as obj; +-----------------------+ | OBJ | |-----------------------| | { | | "Key_One": null, | | "Key_Three": "null" | | } | +-----------------------+
OBJECT_CONSTRUCT는 JSON 오브젝트에서 값을 추가, 수정 또는 생략하기 위한 식 및 쿼리를 지원합니다.
SELECT OBJECT_CONSTRUCT( 'foo', 1234567, 'dataset_size', (SELECT COUNT(*) FROM demo_table_1), 'distinct_province', (SELECT COUNT(DISTINCT province) FROM demo_table_1), 'created_date_seconds', extract(epoch_seconds, created_date) ) FROM demo_table_1; +-------------------------------------------------------------------------------+ | OBJECT_CONSTRUCT( | | 'FOO', 1234567, | | 'DATASET_SIZE', (SELECT COUNT(*) FROM DEMO_TABLE_1), | | 'DISTINCT_PROVINCE', (SELECT COUNT(DISTINCT PROVINCE) FROM DEMO_TABLE_1), | | 'CREATED_DATE_SECONDS', EXTRACT(EPOCH_SECONDS, CREATED_DATE) | | ) | |-------------------------------------------------------------------------------| | { | | "created_date_seconds": 1579305600, | | "dataset_size": 2, | | "distinct_province": 2, | | "foo": 1234567 | | } | | { | | "created_date_seconds": 1579392000, | | "dataset_size": 2, | | "distinct_province": 2, | | "foo": 1234567 | | } | +-------------------------------------------------------------------------------+