วิธีกู้คืนข้อมูลที่ถูกลบโดยไม่ได้ตั้งใจจาก 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)

ยี่สิบสี่ชั่วโมงหลังจากที่คุณลบชุดข้อมูล คุณสามารถสร้างชุดข้อมูลใหม่ที่มีชื่อเดียวกันและเริ่มกู้คืนตารางและมุมมองได้

จะทำอย่างไรเพื่อป้องกันปัญหาที่คล้ายกันในอนาคต

  1. เปิดการรวบรวมบันทึกในโปรเจ็กต์ Google BigQuery เมื่อคุณเริ่มทำงานกับโปรเจ็กต์
  2. อย่าตั้งชื่อตารางและดูเหมือนกับชุดข้อมูล
  3. ตรวจสอบชื่อตารางที่คุณต้องการลบจาก Google BigQuery อีกครั้ง
  4. ลบตารางผ่านการสืบค้น ไม่ใช่ผ่านส่วนต่อประสานผู้ใช้
  5. เพิ่มชนิดเอนทิตีให้กับชื่อชุดข้อมูล ตาราง และมุมมอง ตัวอย่างเช่น:
    1. OWOXBI_report_dataset
    2. OWOXBI_report_table
    3. 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

รับการสาธิต