distinctJSONPathsAndTypes
استُحدثت في: v24.9.0
تحسب قائمة المسارات الفريدة وأنواعها المخزَّنة في عمود JSON.
إذا كان تعريف JSON يحتوي على مسارات بأنواع محددة، فستُدرَج هذه المسارات دائمًا في ناتج الدالتين distinctJSONPaths/distinctJSONPathsAndTypes حتى إذا لم تتضمن بيانات الإدخال قيمًا لهذه المسارات.
البنية
distinctJSONPathsAndTypes(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))']} │
└────────────────────────────────────────────────────────────────┘