Skip to main content

الوصف

في هذا التنسيق، تُمثَّل جميع البيانات على شكل كائن 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 بما يلي:
  • أي ترتيب لأزواج المفتاح والقيمة داخل الكائن.
  • حذف بعض القيم.
يتجاهل ClickHouse المسافات بين العناصر والفواصل بعد الكائنات. يمكنك تمرير جميع الكائنات في سطر واحد. ولا يلزم فصلها بأسطر جديدة.

معالجة القيم المحذوفة

يستبدل 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، لا تُستبدل تسلسلات UTF-8 غير الصالحة. تُفلت القيم بالطريقة نفسها كما في JSON.
يمكن إخراج أي مجموعة من البايتات في السلاسل النصية. استخدم تنسيق JSONEachRow إذا كنت متأكدًا من أن البيانات الموجودة في الجدول يمكن تنسيقها بصيغة JSON من دون فقدان أي معلومات.

استخدام البُنى Nested

إذا كان لديك جدول يحتوي على أعمدة من نوع البيانات Nested، فيمكنك إدراج بيانات JSON بالبنية نفسها. فعِّل هذه الميزة باستخدام الإعداد input_format_import_nested_json. على سبيل المثال، تأمل الجدول التالي:
Query
كما ترى في وصف نوع البيانات Nested، يتعامل ClickHouse مع كل مكوّن من البنية المتداخلة على أنه عمود منفصل (n.s و n.i في جدولنا). يمكنك إدراج البيانات بالطريقة التالية:
Query
لإدراج البيانات ككائن JSON هرمي، اضبط input_format_import_nested_json=1.
بدون هذا الإعداد، يُطلق ClickHouse استثناءً.
Query
Response
Query
Response
Query
Response

إعدادات التنسيق

آخر تعديل في ٣ يوليو ٢٠٢٦