distinctJSONPathsAndTypes

distinctJSONPathsAndTypes

JSON 컬럼에 저장된 서로 다른 경로(path)들과 각각의 타입들을 계산하는 집계 함수예요. 경로를 키로, 타입 배열을 값으로 하는 정렬된 맵을 반환합니다.

출처: 문서

본문

도입 버전: v24.9.0

JSON 컬럼에 저장된 서로 다른 경로들과 그 타입들의 목록을 계산합니다.

참고: JSON 선언에 타입이 지정된 경로가 포함되어 있다면, 입력 데이터에 해당 경로의 값이 없더라도 그 경로들은 항상 distinctJSONPaths/distinctJSONPathsAndTypes 함수의 결과에 포함됩니다.

구문 (Syntax)

distinctJSONPathsAndTypes(json)

인자 (Arguments)

  • json — JSON 컬럼. JSON

반환 값

정렬된 경로와 타입의 맵을 반환합니다. Map(String, Array(String))

예제

혼합 타입과 함께 사용한 기본 예제

DROP TABLE IF EXISTS test_json;
CREATE TABLE test_json(json JSON) ENGINE = Memory;
INSERT INTO test_json VALUES ('{"a" : 42, "b" : "Hello"}'), ('{"b" : [1, 2, 3], "c" : {"d" : {"e" : "2020-01-01"}}}'), ('{"a" : 43, "c" : {"d" : {"f" : [{"g" : 42}]}}}');

SELECT distinctJSONPathsAndTypes(json) FROM test_json;
┌─distinctJSONPathsAndTypes(json)───────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ {'a':['Int64'],'b':['Array(Nullable(Int64))','String'],'c.d.e':['Date'],'c.d.f':['Array(JSON(max_dynamic_types=16, max_dynamic_paths=256))']} │
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

선언된 JSON 경로와 함께 사용

DROP TABLE IF EXISTS test_json;
CREATE TABLE test_json(json JSON(a UInt32)) ENGINE = Memory;
INSERT INTO test_json VALUES ('{"b" : "Hello"}'), ('{"b" : "World", "c" : [1, 2, 3]}');

SELECT distinctJSONPathsAndTypes(json) FROM test_json;
┌─distinctJSONPathsAndTypes(json)────────────────────────────────┐
│ {'a':['UInt32'],'b':['String'],'c':['Array(Nullable(Int64))']} │
└────────────────────────────────────────────────────────────────┘

더 알아보기 (Learn more)