OBJECT_KEYS

OBJECT_KEYS

입력 object의 최상위 레벨에 있는 키 목록을 포함하는 배열을 반환해요.

출처: Snowflake SQL Reference - OBJECT_KEYS

본문

구문

OBJECT_KEYS( <object> )

인자

키를 가져오려는 값이에요. 입력 값은 다음 중 하나여야 해요.

  • OBJECT.
  • OBJECT 타입의 값을 포함하는 VARIANT.

반환 값

함수는 키를 포함하는 ARRAY를 반환해요. object가 구조화 OBJECT면 함수는 ARRAY(VARCHAR)를 반환해요.

사용상 주의사항

  • object에 중첩된 object가 포함되어 있으면(예: object 안의 object), 이 함수는 최상위 레벨의 키만 반환해요.

예시

기본 예시

다음 예시는 OBJECT와 OBJECT 타입의 값을 포함하는 VARIANT 모두에서 OBJECT_KEYS가 작동하는 것을 보여줘요.

OBJECT와 VARIANT 타입의 컬럼을 포함하는 테이블을 만들어요.

CREATE TABLE objects_1 (id INTEGER, object1 OBJECT, variant1 VARIANT);

값을 삽입해요.

INSERT INTO objects_1 (id, object1, variant1) 
  SELECT
    1,
    OBJECT_CONSTRUCT('a', 1, 'b', 2, 'c', 3),
    TO_VARIANT(OBJECT_CONSTRUCT('a', 1, 'b', 2, 'c', 3))
    ;

OBJECT와 VARIANT 모두에서 키를 가져와요.

SELECT OBJECT_KEYS(object1), OBJECT_KEYS(variant1) 
    FROM objects_1
    ORDER BY id;
+----------------------+-----------------------+
| OBJECT_KEYS(OBJECT1) | OBJECT_KEYS(VARIANT1) |
|----------------------+-----------------------|
| [                    | [                     |
|   "a",               |   "a",                |
|   "b",               |   "b",                |
|   "c"                |   "c"                 |
| ]                    | ]                     |
+----------------------+-----------------------+

중첩 object 예시

이 예시는 object에 중첩된 object가 포함되어 있으면 최상위 레벨의 키만 반환된다는 것을 보여줘요.

SELECT OBJECT_KEYS (
           PARSE_JSON (
               '{
                    "level_1_A": {
                                 "level_2": "two"
                                 },
                    "level_1_B": "one"
                    }'
               )
           ) AS keys
    ORDER BY 1;
+----------------+
| KEYS           |
|----------------+
| [              |
|   "level_1_A", |
|   "level_1_B"  |
| ]              |
+----------------+

더 알아보기