تحويل JSON إلى BigQuery schema
استخدم الناتج مع bq mk أو bq load أو عند إنشاء الجدول في الواجهة عبر خيار Edit as text.
جارٍ تحميل الأداة…
المعالجة والخصوصية: تُحسب النتيجة داخل متصفحك ولا تُرسل بياناتك إلى أي خادم.
طريقة الاستخدام
- أدخل نص JSON وجعل الحقول الموجودة دائما REQUIRED.
- تظهر النتيجة فورًا وتتحدّث مع كل تعديل.
- انسخ النتيجة، أو انسخ رابطًا يحفظ القيم نفسها لمشاركتها.
طريقة الحساب
INTEGER وFLOAT وBOOLEAN وSTRING، وRECORD مع fields للكائنات، وREPEATED للمصفوفات. المصفوفات المتداخلة والقيم المختلطة تصبح JSON. الأسماء غير الصالحة تتحول إلى snake_case، والوضع NULLABLE افتراضيا أو REQUIRED للحقول الموجودة دائما إذا فعلت الخيار.
مثال
المدخلات: جعل الحقول الموجودة دائما REQUIRED = لا. النتيجة: الكود الناتج: [ { "name": "id", "type": "INTEGER", "mode": "NULLABLE" }, { "name": "name", "type": "STRING", "mode": "NULLABLE" }, { "name": "email", "type": "STRING", "mode": "NULLABLE" }, { "name": "is_active", "type": "BOOLEAN", "mode": "NULLABLE" }, { "name": "balance", "type": "FLOAT", "mode": "NULLABLE" }, { "name": "tags", "type": "STRING", "mode": "REPEATED" }, { "name": "address", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "city", "type": "STRING", "mode": "NULLABLE" }, { "name": "postal_code", "type": "STRING", "mode": "NULLABLE" } ] }, { "name": "orders", "type": "RECORD", "mode": "REPEATED", "fields": [ { "name": "order_id", "type": "STRING", "mode": "NULLABLE" }, { "name": "total", "type": "FLOAT", "mode": "NULLABLE" }, { "name": "coupon", "type": "STRING", "mode": "NULLABLE" } ] } ]، عدد الأنواع: 3، عدد الحقول: 13.
{
"id": 1024,
"name": "Sara Ahmed",
"email": "sara@example.com",
"is_active": true,
"balance": 1520.75,
"tags": ["vip", "riyadh"],
"address": { "city": "Riyadh", "postal_code": "12211" },
"orders": [
{ "order_id": "A-1", "total": 99.5, "coupon": "EID10" },
{ "order_id": "A-2", "total": 120, "coupon": null }
]
}[
{
"name": "id",
"type": "INTEGER",
"mode": "NULLABLE"
},
{
"name": "name",
"type": "STRING",
"mode": "NULLABLE"
},
{
"name": "email",
"type": "STRING",
"mode": "NULLABLE"
},
{
"name": "is_active",
"type": "BOOLEAN",
"mode": "NULLABLE"
},
{
"name": "balance",
"type": "FLOAT",
"mode": "NULLABLE"
},
{
"name": "tags",
"type": "STRING",
"mode": "REPEATED"
},
{
"name": "address",
"type": "RECORD",
"mode": "NULLABLE",
"fields": [
{
"name": "city",
"type": "STRING",
"mode": "NULLABLE"
},
{
"name": "postal_code",
"type": "STRING",
"mode": "NULLABLE"
}
]
},
{
"name": "orders",
"type": "RECORD",
"mode": "REPEATED",
"fields": [
{
"name": "order_id",
"type": "STRING",
"mode": "NULLABLE"
},
{
"name": "total",
"type": "FLOAT",
"mode": "NULLABLE"
},
{
"name": "coupon",
"type": "STRING",
"mode": "NULLABLE"
}
]
}
]الحدود والملاحظات
- BigQuery يرفض قيم null داخل المصفوفات عند تحميل البيانات.
- أسماء الأعمدة في BigQuery لا تميز حالة الأحرف، لذلك يضاف رقم للاسم المكرر مثل id2.
أسئلة شائعة عن هذه الأداة
لماذا الوضع NULLABLE افتراضيا؟
REQUIRED يرفض أي صف يغيب فيه الحقل عند التحميل، وNULLABLE أكثر أمانا مع بيانات لم تفحصها كاملة.
كيف أستخدم الملف مع bq؟
احفظ الناتج في ملف schema.json ثم نفذ bq mk --table dataset.table schema.json.
هل ترسل بياناتي إلى خادم؟
لا، التحويل يعمل داخل متصفحك ولا يغادر نص JSON جهازك.
