본문으로 건너뛰기
최종 수정: 에

JSON_OBJECT_FLATTEN

설명​

JSON_OBJECT_FLATTEN은 중첩된 JSON 객체를 각 리프 값의 경로를 점으로 연결한 키를 갖는 단일 수준의 JSON 객체로 평탄화합니다. NiFi FlattenJson의 "keep-arrays" 동작 방식을 따릅니다. 객체만 재귀적으로 탐색하며, 배열, 스칼라, null, 빈 객체는 더 이상 탐색하지 않고 리프 값으로 유지합니다.

최상위 입력이 객체가 아닌 경우(예: 스칼라, 배열 또는 null)에는 입력을 그대로 반환합니다.

구문​

JSON_OBJECT_FLATTEN(<json_value>)

매개변수​

<json_value> - 평탄화할 JSON 값입니다. JSON 타입이어야 합니다.

반환 값​

JSON 값을 반환합니다:

  • 입력이 중첩된 JSON 객체이면 각 리프 값의 경로를 점으로 연결한 키를 갖는 단일 수준의 JSON 객체를 반환합니다.
  • 입력이 객체가 아니면(스칼라, 배열 또는 null) 입력을 그대로 반환합니다.
  • 입력이 NULL이면 NULL을 반환합니다.

예제​

기본적인 중첩 객체 평탄화​

SELECT json_object_flatten('{"a":{"b":2}}');
+--------------------------------------+
| json_object_flatten('{"a":{"b":2}}') |
+--------------------------------------+
| {"a.b":2} |
+--------------------------------------+

깊게 중첩된 객체​

SELECT json_object_flatten('{"a":{"b":{"c":3}}}');
+--------------------------------------------+
| json_object_flatten('{"a":{"b":{"c":3}}}') |
+--------------------------------------------+
| {"a.b.c":3} |
+--------------------------------------------+

이미 평탄화된 객체​

SELECT json_object_flatten('{"a":1,"b":"hi"}');
+-----------------------------------------+
| json_object_flatten('{"a":1,"b":"hi"}') |
+-----------------------------------------+
| {"a":1,"b":"hi"} |
+-----------------------------------------+

배열을 분해하지 않고 리프 값으로 유지​

SELECT json_object_flatten('{"a":[{"b":1},{"b":2}]}');
+------------------------------------------------+
| json_object_flatten('{"a":[{"b":1},{"b":2}]}') |
+------------------------------------------------+
| {"a":[{"b":1},{"b":2}]} |
+------------------------------------------------+
SELECT json_object_flatten('{"a":{"b":[1,2,3]}}');
+--------------------------------------------+
| json_object_flatten('{"a":{"b":[1,2,3]}}') |
+--------------------------------------------+
| {"a.b":[1,2,3]} |
+--------------------------------------------+

객체가 아닌 최상위 값은 그대로 반환​

SELECT json_object_flatten('42');
+---------------------------+
| json_object_flatten('42') |
+---------------------------+
| 42 |
+---------------------------+
SELECT json_object_flatten('[1,2,{"x":3}]');
+--------------------------------------+
| json_object_flatten('[1,2,{"x":3}]') |
+--------------------------------------+
| [1,2,{"x":3}] |
+--------------------------------------+

NULL 입력​

SELECT json_object_flatten(NULL);
+---------------------------+
| json_object_flatten(NULL) |
+---------------------------+
| NULL |
+---------------------------+

스칼라, 배열, 하위 객체가 혼합된 중첩 객체​

SELECT json_object_flatten('{"x":{"s":1,"a":[1,2],"o":{"k":"v"}}}');
+--------------------------------------------------------------+
| json_object_flatten('{"x":{"s":1,"a":[1,2],"o":{"k":"v"}}}') |
+--------------------------------------------------------------+
| {"x.s":1,"x.a":[1,2],"x.o.k":"v"} |
+--------------------------------------------------------------+