카테고리:

집계 함수 (반정형 데이터) , 윈도우 함수 (일반) , 반정형 및 정형 데이터 함수 (배열/오브젝트)

OBJECT_AGG

그룹당 한 개의 OBJECT를 반환합니다. key 가 VARCHAR이고 value 가 VARIANT여야 하는 각 (key, value) 입력 쌍에 대해 결과 OBJECT는 key: value 필드를 포함합니다.

별칭:

OBJECTAGG

구문

집계 함수

OBJECT_AGG(<key>, <value>)
Copy

윈도우 함수

OBJECT_AGG(<key>, <value>)
    OVER ( [ PARTITION BY <expr2> ] )
Copy

사용법 노트

  • NULL key 및/또는 value 가 있는 입력 튜플은 무시됩니다.

  • 그룹 내에서 키가 중복되면 Duplicate field key 'key' 오류가 발생합니다.

  • DISTINCT 키워드가 지원되지만, keyvalue 가 둘 다 동일한 중복 행만 필터링합니다.

  • 윈도우 함수로 사용되는 경우:

    • 이 함수는 다음을 지원하지 않습니다.

      • 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 |
---+------+-------+
Copy

이 예는 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"   |
 }                 |
-------------------+
Copy
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" |
-----+------+-------+
Copy