يتيح محرك BigQuery قراءة البيانات من جدول والكتابة إليه في Google BigQuery، بما في ذلك مجموعات البيانات العامة.
تستخدم القراءة واجهة برمجة تطبيقات REST الخاصة بـ BigQuery (tabledata.list)، لذلك لا يمكن قراءة سوى الجداول الأصلية، أما العروض والعروض المادية والجداول الخارجية فلا يمكن قراءتها. وتستخدم الكتابة عمليات الإدراج المتدفقة (tabledata.insertAll)، التي تتطلب تمكين الفوترة للمشروع.
عمليات الكتابة ليست ذرية: يُرسل أمر INSERT كبير على دفعات (بحد أقصى 500 صف لكل طلب، ويُقسّم أيضًا ليبقى ضمن حد BigQuery البالغ 10 MB لحجم الطلب). وقد ينجح الطلب الواحد جزئيًا (إذ يمكن لـ BigQuery تثبيت بعض صفوف الطلب ورفض الصفوف الأخرى مع insertErrors)، وقد تُرفض دفعة لاحقة بعد قبول دفعات سابقة — وفي كلتا الحالتين، تبقى الصفوف المثبتة بالفعل في BigQuery بينما يُبلغ الاستعلام عن خطأ. يحمل كل صف insertId ثابتًا (مشتقًا من معرّف الاستعلام والموضع الترتيبي للصف) لكي يزيل BigQuery، بأفضل جهد، تكرار الصفوف التي أُعيدت محاولتها؛ ولأن insertId يعتمد على الموضع الترتيبي، فإن إعادة تشغيل أمر INSERT نفسه تزيل التكرار فقط عند تقديم الصفوف بالترتيب نفسه (على سبيل المثال، عند التشغيل أحادي الخيط، مع max_threads = 1 وmax_insert_threads = 1). راجع قيود دالة الجدول bigquery للتفاصيل.
قائمة الأعمدة اختيارية: عند عدم تحديدها، يُستنتج المخطط من مخطط جدول BigQuery. وعند تحديدها، يمكن أن تكون الأعمدة مجموعة فرعية من أعمدة BigQuery، ويجب تعريف كل عمود بالنوع المطابق تماماً لما يعيّنه له مخطط BigQuery (راجع تعيين أنواع البيانات). يمكن قراءة جدول يحذف تعريفه حقلاً REQUIRED في BigQuery ليس له تعبير قيمة افتراضية، ولكن لا يمكن الكتابة إليه: إذ ترفض عمليات الإدراج المتدفقة في BigQuery الصفوف التي لا تتضمن حقلاً كهذا، ولذلك يُرفض INSERT مسبقاً. عندما يعرّف الحقل REQUIRED المحذوف defaultValueExpression، يملأ BigQuery القيمة الافتراضية، ويظل الجدول قابلاً للكتابة. يُعيَّن RECORD ذو NULLABLE إلى Nullable(Tuple(...)) لضمان حفظ سجلات NULL دون فقدان عند النقل ذهاباً وإياباً؛ ويتطلب إنشاء مثل هذا الجدول، سواء استُنتج مخططه أو عُرّف صراحةً، الإعداد enable_nullable_tuple_type، كما هو الحال مع أي عمود Nullable(Tuple). عند تعريف الأعمدة صراحةً، يمكن بدلاً من ذلك تعريف حقل RECORD على أنه Tuple(...) عادي لتجنب هذا الإعداد، مقابل تحويل NULL للسجل بأكمله إلى tuple افتراضي؛ والاختلاف الوحيد المقبول عن النوع المستنتج هو إزالة Nullable الذي يغلّف Tuple الخاص بـ RECORD، وفقط في ذلك السجل نفسه — إذ لا يمكن نقل قابلية القيم الفارغة إلى سجل آخر، داخلياً كان أم خارجياً.
معلمات المحرك
project — مشروع Google Cloud الذي يملك مجموعة البيانات.
dataset — اسم مجموعة البيانات.
table — اسم الجدول.
access_token — رمز وصول OAuth 2.0 (وسيطة موضعية اختيارية).
يمكن أيضاً تمرير المعلمات على هيئة مجموعة مسماة مع تجاوزات key = value. راجع دالة الجدول bigquery للاطلاع على القائمة الكاملة للمفاتيح ووصف طرق المصادقة. يجب توفير طريقة مصادقة واحدة فقط؛ وبالنسبة إلى جدول دائم، يُفضَّل استخدام service_account_key أو refresh_token بدلاً من access_token، لأن رموز الوصول تنتهي صلاحيتها خلال ساعة.
آخر تعديل في ١٤ أغسطس ٢٠٢٦