Cum să restabiliți datele șterse accidental din Google BigQuery

Publicat: 2022-04-12

Ați șters vreodată din greșeală un tabel important, o vizualizare sau un întreg set de date din Google BigQuery? Dacă aveți, știți că nu puteți continua să lucrați cu tabelele și interogările care conțin datele șterse.

Am scris instrucțiuni detaliate pentru a vă ajuta să restaurați datele șterse din greșeală și să nu aveți păr gri înainte de termen.

Cuprins

  • Cum să restabiliți un tabel șters
  • Cum să restabiliți o vizualizare ștearsă
  • Cum să restaurați un set de date șters
  • Ce trebuie să faceți pentru a preveni probleme similare în viitor
  • Ce trebuie să faceți pentru a reduce amploarea problemei dacă se întâmplă din nou

Cum să restabiliți un tabel șters

Puteți restaura un tabel șters dacă nu au trecut mai mult de șapte zile de când a fost șters și dacă îi cunoașteți numele și numele setului de date din care a fost șters.

Pentru a restabili un tabel, deschideți linia de comandă Cloud Shell în interfața Google BigQuery:

Introduceți următoarea comandă:

    bq cp mydataset.mytable@-3600000 mydataset.newtable
bq cp mydataset.mytable@-3600000 mydataset.newtable

Exemplu de aceeași comandă cu nume de tabel și seturi de date:

    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

Unde:

  • OWOXBI_Reports.123_Transactions_withModels — este setul de date și tabelul care au fost șterse.
  • OWOXBI_Reports_Restore.123_Transactions_withModels — este setul de date și numele tabelului din acesta în care doriți să restaurați datele.
  • @-13600000 — o distanță în trecut (acum 13.600.000 de milisecunde) când tabelul pe care îl căutați încă mai exista. De exemplu, dacă un tabel a fost șters cu 30 de minute în urmă, este suficient să setați intervalul de timp @ -3600000, care este acum o oră (60 de secunde × 60 de minute × 1000).

După introducerea cererii, este necesară autorizarea. Faceți clic pe butonul Autorizare:

După ce comanda este executată cu succes, tabelul va fi restaurat:

Veți vedea un text similar cu acesta:

    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' 

Cum să restabiliți o vizualizare ștearsă

Nu puteți restabili o vizualizare de la distanță în modul descris mai sus. Această metodă este potrivită doar pentru mese.

Asistența Google recomandă utilizarea Logs Explorer pentru a restabili o vizualizare ștearsă.

Pentru a găsi interogări care au actualizat o vizualizare de la distanță, rulați următoarea interogare în jurnalele 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"

Unde:

  • tableservice.update — este comanda pentru a afișa actualizarea vizualizării în jurnale
  • custom_events_attribution_VIEW — numele vizualizării

În setările Selectați intervalul de timp, setați perioada în care se pot face modificări în vizualizare (de exemplu, un an):

Când comanda este executată, vor fi afișate toate interogările care au actualizat vizualizarea pe care o căutați. Selectați ultima interogare de marcaj temporal:

Copiați interogarea din jurnal și recreați vizualizarea.

În plus, puteți găsi interogarea care a creat vizualizarea pe care o căutați (înainte de aceasta, am căutat interogări care au actualizat vizualizarea). Pentru a face acest lucru, utilizați următoarea comandă:

    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" 

Vă recomandăm să setați cea mai lungă perioadă posibilă pentru a căuta în jurnale intrarea necesară.

Dacă o vizualizare a fost creată înainte ca jurnalele să înceapă să fie înregistrate, nu va fi posibilă restaurarea acesteia. În acest caz, comanda tableservice.update pe care am descris-o mai sus poate ajuta.

Cum să restabiliți un set de date șters

Dacă ștergeți un set de date, nu îl veți putea restaura. Trebuie să creați un nou set de date cu același nume, să restaurați tabelele și vizualizările care au fost în setul de date șters și să le mutați în noul set de date.

În primele 24 de ore după ștergerea unui set de date, nu puteți crea un nou set de date cu același nume, dar puteți găsi în continuare numele tabelelor și vizualizărilor care au făcut parte din setul de date șters. Cu toate acestea, tabelele și vederile în sine nu vor mai fi vizibile.

Puteți găsi vizualizări dintr-un set de date șters după nume căutând în BigQuery:

Lista tabelelor nu poate fi găsită prin căutare, deoarece tabelele nu au o componentă comună în numele lor.

Pentru a găsi un nume de tabel dintr-un set de date șters, utilizați următoarea interogare SQL. În interogare, specificați perioada în care tabelele pot fi modificate (creation_time BETWEEN). Ca rezultat, interogarea va returna tabele la care s-au făcut modificări în intervalul de timp. Acestea vor fi tabelele din setul de date șters.

    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)

În urma solicitării, veți primi următoarele informații:

  • interogare — textul interogării care a făcut schimbarea în tabel_destinație
  • user _email — utilizatorul care a început cererea de actualizare destination_table
  • destination_table — tabelul care a fost actualizat
  • job_ids — numărul de interogări începute în intervalul de timp specificat (creation_time BETWEEN ...)
  • lastUpdateDate — ultima dată când interogarea a fost pornită (MAX(creation_time) AS lastUpdateDate)

La douăzeci și patru de ore după ce ștergeți un set de date, puteți crea un nou set de date cu același nume și puteți începe să restaurați tabelele și vizualizările.

Ce trebuie să faceți pentru a preveni probleme similare în viitor

  1. Activați colectarea jurnalelor în proiectul dvs. Google BigQuery când începeți să lucrați cu proiectul.
  2. Nu denumiți un tabel și nu vizualizați la fel ca un set de date.
  3. Verificați de două ori numele oricărui tabel pe care doriți să îl ștergeți din Google BigQuery.
  4. Ștergeți tabelele prin interogări, nu prin interfața cu utilizatorul.
  5. Adăugați tipul de entitate la numele setului de date, tabelului și vizualizărilor. De exemplu:
    1. OWOXBI_report_dataset
    2. OWOXBI_report_table
    3. OWOXBI_report_view

Puteți șterge un tabel folosind o interogare:

    DROP TABLE `summer-drive-112011.OWOXBI_Reports_Restore.test_table`
DROP TABLE `summer-drive-112011.OWOXBI_Reports_Restore.test_table`

De asemenea, puteți șterge o vizualizare folosind o interogare:

    DROP VIEW `summer-drive-112011.OWOXBI_Reports_Restore.test_VIEW`
DROP VIEW `summer-drive-112011.OWOXBI_Reports_Restore.test_VIEW` 

Ce trebuie să faceți pentru a reduce amploarea problemei dacă se întâmplă din nou

  • Nu modificați interogările în Schedule și Google Apps Script; a doua zi, restaurați toate vizualizările și tabelele, după care Schedule și Google Apps Script vor funcționa corect.
  • Dacă vizualizarea sau tabelul a fost implicat în configurarea modelului de atribuire, va trebui să reporniți calculul de atribuire după ce ați restaurat datele în locația anterioară.

Link-uri utile pe subiect

Restaurarea tabelelor șterse

Ștergerea unui tabel

Gestionarea vizualizărilor

Cum să recuperați instantaneu un tabel în Google BigQuery

Clienții noștri
crește cu 22% mai rapid

Creșteți mai repede, măsurând ceea ce funcționează cel mai bine în marketingul dvs

Analizați-vă eficiența de marketing, găsiți zonele de creștere, creșteți rentabilitatea investiției

Obțineți o demonstrație