الوصف
في هذا التنسيق، تُمثَّل جميع البيانات على شكل كائن JSON واحد، ويُمثَّل كل صف كحقل منفصل ضمن هذا الكائن، على غرار تنسيقJSONEachRow.
مثال للاستخدام
مثال بسيط
إذا كانت لدينا بعض بيانات JSON:format_json_object_each_row_column_for_object_name.
تُعيَّن قيمة هذا الإعداد إلى اسم عمود، ويُستخدم هذا الاسم كمفتاح JSON للصف في الكائن الناتج.
المخرجات
لنفترض أن لدينا الجدولtest ويحتوي على عمودين:
JSONObjectEachRow ونستخدم الإعداد format_json_object_each_row_column_for_object_name:
Query
Response
الإدخال
لنفترض أننا خزّنا ناتج المثال السابق في ملف باسمdata.json:
Query
Response
Query
Response
إدخال البيانات
Query
- أي ترتيب لأزواج المفتاح والقيمة داخل الكائن.
- حذف بعض القيم.
معالجة القيم المحذوفة
يستبدل ClickHouse القيم المحذوفة بالقيم الافتراضية لأنواع البيانات المقابلة. إذا جرى تحديدDEFAULT expr، يستخدم ClickHouse قواعد استبدال مختلفة وفقًا للإعداد input_format_defaults_for_omitted_fields.
تأمل الجدول التالي:
Query
- إذا كانت
input_format_defaults_for_omitted_fields = 0، فإن القيمة الافتراضية لكلٍّ منxوaهي0(لأنها القيمة الافتراضية لنوع البياناتUInt32). - إذا كانت
input_format_defaults_for_omitted_fields = 1، فإن القيمة الافتراضية لـxهي0، لكن القيمة الافتراضية لـaهيx * 2.
عند إدراج البيانات باستخدام
input_format_defaults_for_omitted_fields = 1، يستهلك ClickHouse موارد حوسبة أكبر مقارنةً بالإدراج باستخدام input_format_defaults_for_omitted_fields = 0.استعلام البيانات
لنأخذ جدولUserActivity مثالًا:
SELECT * FROM UserActivity FORMAT JSONEachRow ما يلي:
JSON.
يمكن إخراج أي مجموعة من البايتات في السلاسل النصية. استخدم تنسيق
JSONEachRow إذا كنت متأكدًا من أن البيانات الموجودة في الجدول يمكن تنسيقها بصيغة JSON من دون فقدان أي معلومات.استخدام البُنى Nested
إذا كان لديك جدول يحتوي على أعمدة من نوع البياناتNested، فيمكنك إدراج بيانات JSON بالبنية نفسها. فعِّل هذه الميزة باستخدام الإعداد input_format_import_nested_json.
على سبيل المثال، تأمل الجدول التالي:
Query
Nested، يتعامل ClickHouse مع كل مكوّن من البنية المتداخلة على أنه عمود منفصل (n.s و n.i في جدولنا). يمكنك إدراج البيانات بالطريقة التالية:
Query
input_format_import_nested_json=1.
Query
Response
Query
Response
Query
Response