انتقل إلى المحتوى

تحويل JSON إلى مخطط BigQuery — Numio

ينشئ مخطط جدول Google BigQuery (مصفوفة JSON من حقول name وtype وmode) من عينة JSON. تصبح المصفوفات REPEATED، والكائنات المتداخلة RECORD، وتُدمج كل عناصر المصفوفة في مخطط واحد.

إعداد مسودة ملف مخطط لـ bq load أو bq mk --schema من عينة حدث أو استجابة API.

JSON

Big Query Schema

متى تستخدمها

  • إعداد مسودة ملف مخطط لـ bq load أو bq mk --schema من عينة حدث أو استجابة API.
  • التحقق قبل إنشاء جدول من كيفية تحويل الكائنات والمصفوفات المتداخلة في سجل ما إلى أعمدة RECORD وREPEATED.

طريقة الاستخدام

  1. الصق كائن JSON واحدًا أو مصفوفة من السجلات النموذجية في المحرر الأيسر، أو استخدم زر تحميل الملف لفتح ملف بترميز UTF-8.
  2. اقرأ المخطط على اليمين، وتحقق من النوع المختار لكل حقل، خصوصًا التواريخ والسلاسل النصية الرقمية والمصفوفات.
  3. انسخ مصفوفة JSON، وعدّل الأنواع أو اضبط mode على REQUIRED عند الحاجة، واحفظها كملف مخطط.

كائن JSON نموذجي

{
  "order_id": 1024,
  "zip": "02139",
  "coupon": null,
  "created_at": "2026-01-05T10:00:00Z",
  "items": [{ "sku": "A1", "qty": 2 }, { "sku": "B7", "price": 4.5 }]
}

مخطط BigQuery بصيغة JSON

[
  {
    "name": "order_id",
    "type": "INTEGER",
    "mode": "NULLABLE"
  },
  {
    "name": "zip",
    "type": "STRING",
    "mode": "NULLABLE"
  },
  {
    "name": "coupon",
    "type": "STRING",
    "mode": "NULLABLE"
  },
  {
    "name": "created_at",
    "type": "TIMESTAMP",
    "mode": "NULLABLE"
  },
  {
    "name": "items",
    "type": "RECORD",
…

التفاصيل والقيود

لا تأخذ السلاسل النصية النوع TIMESTAMP إلا إذا بدت كتاريخ ووقت بصيغة ISO (2026-01-05T10:00:00Z)، ولا النوع DATE إلا لصيغة YYYY-MM-DD المجردة؛ وكل ما عدا ذلك، بما فيه السلاسل الرقمية مثل "02139"، يبقى STRING.

القيمة null أو المصفوفة الفارغة لا تحمل نوعًا، فتصبح STRING (NULLABLE أو REPEATED) ما لم يقدّم سجل آخر قيمة. لا يُنشأ الوضع REQUIRED أبدًا.

تُدمج الحقول عبر كل عناصر المصفوفة: INTEGER مع FLOAT يصبح FLOAT، والأنواع المتعارضة الأخرى تعود إلى STRING.

يجري التحويل في متصفحك؛ ولا يُرفع أي شيء.

FAQ

لماذا نوع عمود الطابع الزمني TIMESTAMP وليس DATETIME؟

لا يميّز المولّد بين التاريخ والوقت مع منطقة زمنية أو بدونها؛ فأي سلسلة تاريخ ووقت بصيغة ISO تصبح TIMESTAMP. غيّرها يدويًا إلى DATETIME إذا كانت القيم بلا منطقة زمنية.

هل يمكنني لصق مصفوفة من السجلات؟

نعم. تُدمج مصفوفة الكائنات الجذرية في مخطط واحد، فيُضمَّن الحقل حتى لو ظهر في بعض السجلات فقط. لا يُحلَّل NDJSON (كائن في كل سطر)؛ ضع الأسطر داخل [ ] مع فواصل بينها.

كيف تُحدَّد أنواع القيم null؟

كـ NULLABLE STRING عندما لا تعطي أي عينة أخرى قيمة للحقل، كما يظهر في coupon في المثال. قدّم عينة غير null أو عدّل النوع إذا كان العمود رقميًا أو RECORD.

المواصفات والمراجع