كيفية استعادة البيانات المحذوفة عن طريق الخطأ من Google BigQuery
نشرت: 2022-04-12هل سبق لك أن حذفت عن طريق الخطأ جدولًا مهمًا أو طريقة عرض أو مجموعة بيانات كاملة في Google BigQuery؟ إذا كان لديك ، فأنت تعلم أنه لا يمكنك متابعة العمل مع الجداول والاستعلامات التي تحتوي على البيانات المحذوفة.
لقد كتبنا تعليمات مفصلة لمساعدتك في استعادة البيانات المحذوفة عن طريق الخطأ وعدم ظهور أي شعيرات رمادية قبل الموعد المحدد.
جدول المحتويات
- كيفية استعادة الجدول المحذوف
- كيفية استعادة طريقة عرض محذوفة
- كيفية استعادة مجموعة البيانات المحذوفة
- ما يجب القيام به لمنع حدوث مشاكل مماثلة في المستقبل
- ما يجب القيام به لتقليل حجم المشكلة إذا حدثت مرة أخرى
كيفية استعادة الجدول المحذوف
يمكنك استعادة جدول محذوف إذا لم يمر أكثر من سبعة أيام منذ حذفه وإذا كنت تعرف اسمه واسم مجموعة البيانات التي تم حذفه منها.
لاستعادة جدول ، افتح سطر أوامر Cloud Shell في واجهة Google BigQuery:

أدخل الأمر التالي:
bq cp mydataset.mytable@-3600000 mydataset.newtable
bq cp mydataset.mytable@-3600000 mydataset.newtable
مثال على الأمر نفسه بأسماء الجدول ومجموعة البيانات:
bq cp OWOXBI_Reports.123_Transactions_withModels@-13600000 OWOXBI_Reports_Restore.123_Transactions_withModels
bq cp OWOXBI_Reports.123_Transactions_withModels@-13600000 OWOXBI_Reports_Restore.123_Transactions_withModels
أين:
- OWOXBI_Reports.123_Transactions_withModels - هي مجموعة البيانات والجدول الذي تم حذفه.
- OWOXBI_Reports_Restore.123_Transactions_withModels - هي مجموعة البيانات واسم الجدول بداخلها حيث تريد استعادة البيانات.
- @ -13600000 - مسافة في الماضي (منذ 13600000 مللي ثانية) عندما كان الجدول الذي تبحث عنه لا يزال موجودًا. على سبيل المثال ، إذا تم حذف جدول قبل 30 دقيقة ، يكفي تعيين الفاصل الزمني @ -3600000 ، وهو قبل ساعة (60 ثانية × 60 دقيقة × 1000).
بعد إدخال الطلب ، مطلوب إذن. انقر فوق الزر "تفويض":

بعد تشغيل الأمر بنجاح ، سيتم استعادة الجدول:

سترى نصًا مشابهًا لهذا:
Waiting on bqjob_r4ca30008c2e3147d_0000017af0d58e5e_1 ... (0s) Current status: DONE Table 'summer-drive-112011:OWOXBI_Reports_Restore.test_table@-600000' successfully copied to 'summer-drive-112011:OWOXBI_Reports_Restore.test_table'
Waiting on bqjob_r4ca30008c2e3147d_0000017af0d58e5e_1 ... (0s) Current status: DONE Table 'summer-drive-112011:OWOXBI_Reports_Restore.test_table@-600000' successfully copied to 'summer-drive-112011:OWOXBI_Reports_Restore.test_table'
كيفية استعادة طريقة عرض محذوفة
لا يمكنك استعادة عرض بعيد بالطريقة الموضحة أعلاه. هذه الطريقة مناسبة فقط للجداول.
يوصي دعم Google باستخدام Logs Explorer لاستعادة طريقة عرض محذوفة.
للعثور على طلبات البحث التي حدّثت طريقة عرض عن بُعد ، قم بتشغيل الاستعلام التالي في سجلات Google Cloud Platform:
resource.type="bigquery_resource" protoPayload.methodName="tableservice.update" protoPayload.serviceData.tableUpdateRequest.resource.tableName.tableId="custom_events_attribution_VIEW"
resource.type="bigquery_resource" protoPayload.methodName="tableservice.update" protoPayload.serviceData.tableUpdateRequest.resource.tableName.tableId="custom_events_attribution_VIEW"
أين:
- tableervice.update - هو الأمر لعرض تحديث العرض في السجلات
- custom_events_attribution_VIEW - اسم العرض
في إعدادات تحديد النطاق الزمني ، قم بتعيين الفترة التي يمكن خلالها إجراء التغييرات على العرض (على سبيل المثال ، سنة واحدة):

عند تنفيذ الأمر ، سيتم عرض جميع الاستعلامات التي قامت بتحديث العرض الذي تبحث عنه. حدد آخر استعلام عن الطابع الزمني:

انسخ الاستعلام من السجل وأعد إنشاء العرض.

بالإضافة إلى ذلك ، يمكنك العثور على الاستعلام الذي أنشأ طريقة العرض التي كنت تبحث عنها (قبل ذلك ، بحثنا عن استعلامات لتحديث العرض). للقيام بذلك ، استخدم الأمر التالي:
resource.type="bigquery_resource" protoPayload.methodName="tableservice.insert" protoPayload.serviceData.tableInsertRequest.resource.tableName.tableId="query_name_VIEW"
resource.type="bigquery_resource" protoPayload.methodName="tableservice.insert" protoPayload.serviceData.tableInsertRequest.resource.tableName.tableId="query_name_VIEW"

نوصي بتعيين أطول فترة ممكنة للبحث في السجلات عن الإدخال المطلوب.

إذا تم إنشاء طريقة عرض قبل بدء تسجيل السجلات ، فلن يكون من الممكن استعادتها. في هذه الحالة ، يمكن أن يساعد الأمر Tabvice.update الذي وصفناه أعلاه.
كيفية استعادة مجموعة البيانات المحذوفة
إذا حذفت مجموعة بيانات ، فلن تتمكن من استعادتها. يجب عليك إنشاء مجموعة بيانات جديدة بالاسم نفسه ، واستعادة الجداول وطرق العرض التي كانت موجودة في مجموعة البيانات المحذوفة ، ونقلها إلى مجموعة البيانات الجديدة.
في أول 24 ساعة بعد حذف مجموعة بيانات ، لا يمكنك إنشاء مجموعة بيانات جديدة بالاسم نفسه ، ولكن لا يزال بإمكانك العثور على أسماء الجداول وطرق العرض التي كانت جزءًا من مجموعة البيانات المحذوفة. ومع ذلك ، فإن الجداول وطرق العرض نفسها لن تكون مرئية بعد الآن.
يمكنك العثور على عروض من مجموعة بيانات محذوفة بالاسم من خلال البحث في BigQuery:

لا يمكن العثور على قائمة الجداول من خلال البحث ، لأن الجداول لا تحتوي على مكون مشترك في أسمائها.
للبحث عن اسم جدول من مجموعة بيانات محذوفة ، استخدم استعلام SQL التالي. في الاستعلام ، حدد الفترة التي يمكن خلالها تعديل الجداول (وقت الإنشاء BETWEEN). نتيجة لذلك ، سيرجع الاستعلام الجداول التي تم إجراء تغييرات عليها في أي فترة زمنية. ستكون هذه هي الجداول من مجموعة البيانات المحذوفة.
SELECT * FROM ( SELECT query, user_email, CONCAT(destination_table.project_id,".",destination_table.dataset_id,".",destination_table.table_id) AS destination_table, COUNT(job_id) AS job_ids, MAX(creation_time) AS lastUpdateDate FROM region-us.INFORMATION_SCHEMA.JOBS_BY_PROJECT WHERE creation_time BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 180 DAY) AND TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 0 DAY) AND state = 'DONE' AND CONCAT(destination_table.project_id,".",destination_table.dataset_id,".",destination_table.table_id) LIKE "%OWOXBI_Reports.%" GROUP BY 1, 2, 3 ORDER BY 5 DESC)
SELECT * FROM ( SELECT query, user_email, CONCAT(destination_table.project_id,".",destination_table.dataset_id,".",destination_table.table_id) AS destination_table, COUNT(job_id) AS job_ids, MAX(creation_time) AS lastUpdateDate FROM region-us.INFORMATION_SCHEMA.JOBS_BY_PROJECT WHERE creation_time BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 180 DAY) AND TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 0 DAY) AND state = 'DONE' AND CONCAT(destination_table.project_id,".",destination_table.dataset_id,".",destination_table.table_id) LIKE "%OWOXBI_Reports.%" GROUP BY 1, 2, 3 ORDER BY 5 DESC)
نتيجة للطلب ، ستتلقى المعلومات التالية:
- الاستعلام - نص الاستعلام الذي أجرى التغيير على destination_table
- user _email - المستخدم الذي بدأ طلب تحديث destination_table
- Destination_table - الجدول الذي تم تحديثه
- job_ids - عدد الاستعلام الذي يبدأ خلال الفترة الزمنية المحددة (وقت الإنشاء BETWEEN…)
- lastUpdateDate - آخر مرة بدأ فيها الاستعلام (MAX (وقت_الإنشاء) AS lastUpdateDate)
بعد أربع وعشرين ساعة من حذف مجموعة بيانات ، يمكنك إنشاء مجموعة بيانات جديدة بنفس الاسم والبدء في استعادة الجداول وطرق العرض.
ما يجب القيام به لمنع حدوث مشاكل مماثلة في المستقبل
- شغّل جمع السجلات في مشروع Google BigQuery عند بدء العمل في المشروع.
- لا تقم بتسمية جدول وعرض نفس مجموعة البيانات.
- تحقق جيدًا من اسم أي جدول تريد حذفه من Google BigQuery.
- احذف الجداول عبر الاستعلامات وليس عبر واجهة المستخدم.
- أضف نوع الكيان إلى مجموعة البيانات والجدول وأسماء العرض. علي سبيل المثال:
- OWOXBI_report_dataset
- OWOXBI_report_table
- OWOXBI_report_view
يمكنك حذف جدول باستخدام استعلام:
DROP TABLE `summer-drive-112011.OWOXBI_Reports_Restore.test_table`
DROP TABLE `summer-drive-112011.OWOXBI_Reports_Restore.test_table`
يمكنك أيضًا حذف طريقة عرض باستخدام استعلام:
DROP VIEW `summer-drive-112011.OWOXBI_Reports_Restore.test_VIEW`
DROP VIEW `summer-drive-112011.OWOXBI_Reports_Restore.test_VIEW`
ما يجب القيام به لتقليل حجم المشكلة إذا حدثت مرة أخرى
- لا تغير الاستعلامات في الجدول الزمني و Google Apps Script ؛ في اليوم التالي ، قم باستعادة جميع طرق العرض والجداول ، وبعد ذلك سيعمل الجدول الزمني و Google Apps Script بشكل صحيح.
- إذا تم تضمين الملف الشخصي أو الجدول في إعداد نموذج الإحالة ، فستحتاج إلى إعادة تشغيل حساب الإحالة بعد استعادة البيانات إلى موقعها السابق.
روابط مفيدة حول الموضوع
استعادة الجداول المحذوفة
حذف الجدول
إدارة المشاهدات
كيفية استرداد جدول على الفور في Google BigQuery

عملائنا
تنمو 22٪ أسرع
حقق نموًا أسرع عن طريق قياس أفضل أداء في التسويق
تحليل كفاءتك التسويقية ، والعثور على مجالات النمو ، وزيادة عائد الاستثمار
احصل على نسخة تجريبية