- 카테고리:
집계 함수 (반정형 데이터) , 윈도우 함수 (일반) , 반정형 및 정형 데이터 함수 (배열/오브젝트)
OBJECT_AGG¶
그룹당 한 개의 OBJECT를 반환합니다. key
가 VARCHAR이고 value
가 VARIANT여야 하는 각 (key
, value
) 입력 쌍에 대해 결과 OBJECT는 key
: value
필드를 포함합니다.
- 별칭:
OBJECTAGG
구문¶
집계 함수
OBJECT_AGG(<key>, <value>)
윈도우 함수
OBJECT_AGG(<key>, <value>)
OVER ( [ PARTITION BY <expr2> ] )
사용법 노트¶
NULL
key
및/또는value
가 있는 입력 튜플은 무시됩니다.그룹 내에서 키가 중복되면
Duplicate field key 'key'
오류가 발생합니다.DISTINCT 키워드가 지원되지만,
key
및value
가 둘 다 동일한 중복 행만 필터링합니다.윈도우 함수로 사용되는 경우:
이 함수는 다음을 지원하지 않습니다.
OVER() 절의 ORDER BY 하위 절.
윈도우 프레임.
예¶
CREATE OR REPLACE TABLE objectagg_example(g NUMBER, k VARCHAR(30), v VARIANT);
INSERT INTO objectagg_example SELECT 0, 'name', 'Joe'::variant;
INSERT INTO objectagg_example SELECT 0, 'age', 21::variant;
INSERT INTO objectagg_example SELECT 1, 'name', 'Sue'::variant;
INSERT INTO objectagg_example SELECT 1, 'zip', 94401::variant;
SELECT * FROM objectagg_example;
---+------+-------+
G | K | V |
---+------+-------+
0 | name | "Joe" |
0 | age | 21 |
1 | name | "Sue" |
1 | zip | 94401 |
---+------+-------+
이 예는 OBJECT_AGG()
를 집계 함수로 사용합니다.
SELECT object_agg(k, v) FROM objectagg_example GROUP BY g;
-------------------+
OBJECT_AGG(K, V) |
-------------------+
{ |
"name": "Sue", |
"zip": 94401 |
} |
{ |
"age": 21, |
"name": "Joe" |
} |
-------------------+
SELECT seq, key, value
FROM (SELECT object_agg(k, v) o FROM objectagg_example GROUP BY g),
LATERAL FLATTEN(input => o);
-----+------+-------+
SEQ | KEY | VALUE |
-----+------+-------+
1 | name | "Sue" |
1 | zip | 94401 |
2 | age | 21 |
2 | name | "Joe" |
-----+------+-------+