วิธีกู้คืนข้อมูลที่ถูกลบโดยไม่ได้ตั้งใจจาก 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 — ระยะทางในอดีต (13,600,000 มิลลิวินาทีที่แล้ว) ที่โต๊ะที่คุณกำลังมองหายังคงมีอยู่ ตัวอย่างเช่น หากตารางถูกลบเมื่อ 30 นาทีที่แล้ว ก็เพียงพอที่จะกำหนดช่วงเวลา @ -360000 ซึ่งเป็นหนึ่งชั่วโมงที่ผ่านมา (60 วินาที ×60 นาที × 1,000)
หลังจากป้อนคำขอแล้ว จำเป็นต้องมีการอนุญาต คลิกปุ่มอนุญาต:

หลังจากรันคำสั่งสำเร็จแล้ว ตารางจะถูกกู้คืน:

คุณจะเห็นข้อความคล้ายกับสิ่งนี้:
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"
ที่ไหน:
- tableservice.update — เป็นคำสั่งแสดงการอัพเดทมุมมองใน logs
- 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"

เราขอแนะนำให้คุณกำหนดช่วงเวลาที่ยาวที่สุดเพื่อค้นหารายการที่ต้องการในบันทึก

หากมีการสร้างมุมมองก่อนที่จะเริ่มบันทึกบันทึก จะไม่สามารถกู้คืนได้ ในกรณีนี้ คำสั่ง tableservice.update ที่เราอธิบายข้างต้นสามารถช่วยได้
วิธีคืนค่าชุดข้อมูลที่ถูกลบ
หากคุณลบชุดข้อมูล คุณจะไม่สามารถกู้คืนได้ คุณต้องสร้างชุดข้อมูลใหม่ที่มีชื่อเดียวกัน กู้คืนตารางและมุมมองที่อยู่ในชุดข้อมูลที่ถูกลบ และย้ายไปยังชุดข้อมูลใหม่
ใน 24 ชั่วโมงแรกหลังจากลบชุดข้อมูล คุณไม่สามารถสร้างชุดข้อมูลใหม่ที่มีชื่อเดียวกันได้ แต่คุณยังสามารถค้นหาชื่อของตารางและมุมมองที่เป็นส่วนหนึ่งของชุดข้อมูลที่ถูกลบได้ อย่างไรก็ตาม ตารางและมุมมองเองจะไม่ปรากฏให้เห็นอีกต่อไป
คุณค้นหามุมมองจากชุดข้อมูลที่ถูกลบตามชื่อได้โดยค้นหาใน BigQuery:

ไม่พบรายการตารางผ่านการค้นหา เนื่องจากตารางไม่มีองค์ประกอบทั่วไปในชื่อ
เมื่อต้องการค้นหาชื่อตารางจากชุดข้อมูลที่ถูกลบ ให้ใช้แบบสอบถาม SQL ต่อไปนี้ ในแบบสอบถาม ระบุช่วงเวลาที่สามารถแก้ไขตารางได้ (creation_time 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)
ตามคำขอ คุณจะได้รับข้อมูลต่อไปนี้:
- แบบสอบถาม — ข้อความของแบบสอบถามที่ทำการเปลี่ยนแปลงเป็นปลายทาง_table
- ผู้ใช้ _email — ผู้ใช้ที่เริ่มต้นคำขอการอัพเดท destination_table
- destination_table — ตารางที่ได้รับการปรับปรุง
- job_ids — จำนวนการสืบค้นเริ่มต้นในช่วงเวลาที่กำหนด (creation_time BETWEEN …)
- lastUpdateDate — ครั้งสุดท้ายที่เริ่มการสืบค้น (MAX(creation_time) 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 ในวันถัดไป คืนค่ามุมมองและตารางทั้งหมด หลังจากนั้น Schedule และ Google Apps Script จะทำงานอย่างถูกต้อง
- หากมุมมองหรือตารางเกี่ยวข้องกับการตั้งค่ารูปแบบการระบุแหล่งที่มา คุณจะต้องเริ่มการคำนวณการระบุแหล่งที่มาใหม่หลังจากกู้คืนข้อมูลไปยังตำแหน่งก่อนหน้า
ลิงค์ที่เป็นประโยชน์ในหัวข้อ
การกู้คืนตารางที่ถูกลบ
การลบตาราง
การจัดการมุมมอง
วิธีกู้คืนตารางใน Google BigQuery ทันที

ลูกค้าของเรา
เติบโต เร็วขึ้น 22%
เติบโตเร็วขึ้นด้วยการวัดว่าอะไรทำงานได้ดีที่สุดในการทำการตลาดของคุณ
วิเคราะห์ประสิทธิภาพทางการตลาดของคุณ ค้นหาพื้นที่การเติบโต เพิ่ม ROI
รับการสาธิต