Memulihkan tabel yang dihapus
Dokumen ini menjelaskan cara memulihkan (atau membatalkan penghapusan) tabel yang dihapus di BigQuery. Anda dapat memulihkan tabel yang dihapus dalam periode perjalanan waktu yang ditentukan untuk set data, termasuk penghapusan eksplisit dan penghapusan implisit karena akhir masa berlaku tabel. Anda juga dapat mengonfigurasi periode perjalanan waktu.
Untuk mengetahui informasi tentang cara memulihkan seluruh set data atau snapshot yang dihapus, lihat referensi berikut:
Periode perjalanan waktu dapat memiliki durasi antara dua dan tujuh hari. Setelah periode perjalanan waktu berakhir, BigQuery menyediakan periode fail-safe di mana data yang dihapus akan otomatis disimpan selama tujuh hari lagi. Setelah periode fail-safe berlalu, Anda tidak dapat memulihkan tabel menggunakan metode apa pun, termasuk membuka tiket dukungan.
Sebelum memulai
Pastikan Anda memiliki izin Identity and Access Management (IAM) yang diperlukan untuk memulihkan tabel yang dihapus.
Peran yang diperlukan
Untuk mendapatkan izin yang diperlukan untuk memulihkan tabel yang dihapus, minta administrator Anda untuk memberi Anda peran IAM BigQuery User (roles/bigquery.user) di project.
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Memulihkan tabel
Anda dapat memulihkan tabel dari data historis dengan menyalin data historis ke dalam tabel baru. Menyalin data historis tetap berfungsi meskipun tabel telah dihapus atau telah habis masa berlakunya, asalkan Anda memulihkan tabel dalam durasi periode perjalanan waktu.
Saat Anda memulihkan tabel dari data historis, tag dari tabel sumber tidak disalin ke tabel tujuan. Informasi partisi tabel juga tidak disalin ke tabel tujuan. Untuk membuat ulang skema partisi tabel asli, Anda dapat melihat permintaan pembuatan tabel awal di Cloud Logging dan menggunakan informasi tersebut untuk memartisi tabel yang dipulihkan.
Anda dapat memulihkan tabel yang telah dihapus, tetapi masih dalam jangka waktu perjalanan dengan menyalin tabel tersebut ke tabel baru, menggunakan dekorator waktu @<time>.
Anda tidak dapat membuat kueri tabel yang dihapus, meskipun Anda menggunakan dekorator waktu. Anda harus memulihkannya terlebih dahulu.
Gunakan sintaksis berikut dengan dekorator waktu @<time>:
tableid@TIMEdenganTIMEadalah jumlah milidetik sejak epoch Unix.tableid@-TIME_OFFSETdenganTIME_OFFSETadalah offset relatif dari waktu saat ini, dalam milidetik.tableid@0: Menentukan data historis terlama yang tersedia.
Untuk memulihkan tabel, pilih salah satu opsi berikut:
Konsol
Anda tidak dapat membatalkan penghapusan tabel menggunakan konsol Google Cloud .
bq
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Untuk memulihkan tabel, pertama-tama tentukan stempel waktu UNIX saat tabel ada (dalam milidetik). Anda dapat menggunakan perintah
dateLinux untuk membuat stempel waktu Unix dari nilai stempel waktu biasa:date -d '2023-08-04 16:00:34.456789Z' +%s000
Kemudian, gunakan perintah
bq copydengan dekorator perjalanan waktu@<time>untuk melakukan operasi penyalinan tabel.Misalnya, masukkan perintah berikut untuk menyalin tabel
mydataset.mytablepada saat1418864998000ke tabel barumydataset.newtable.bq cp mydataset.mytable@1418864998000 mydataset.newtable
(Opsional) Berikan flag
--locationdan tetapkan nilainya ke lokasi Anda.Anda juga dapat menentukan offset relatif. Contoh berikut menyalin versi tabel dari satu jam yang lalu:
bq cp mydataset.mytable@-3600000 mydataset.newtable
Go
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Go API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Java
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Java API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Node.js
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Node.js API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Python
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Python API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Jika mengantisipasi bahwa Anda mungkin ingin memulihkan tabel lebih lama dari yang diizinkan oleh periode perjalanan waktu, buat snapshot tabel dari tabel tersebut. Untuk informasi selengkapnya, lihat Pengantar snapshot tabel.
Anda tidak dapat memulihkan tampilan logis secara langsung. Untuk mengetahui informasi selengkapnya, lihat Memulihkan tampilan.
Memecahkan masalah pemulihan tabel
Membuat kueri tabel yang dihapus menggunakan stempel waktu di masa lalu
Anda tidak dapat memulihkan data tabel dengan mengkueri tabel yang dihapus pada waktu sebelumnya menggunakan
dekorator stempel waktu atau menggunakan
FOR SYSTEM_TIME AS OF
untuk menyimpan hasil dalam tabel tujuan. Menggunakan salah satu metode ini akan menghasilkan error berikut:
Not found: Table myproject:mydataset.table was not found in location LOCATION
Sebagai gantinya, untuk menyalin tabel, ikuti langkah-langkah di Memulihkan tabel.
Error: VPC Service Controls: Request is prohibited by organization's policy
Saat mencoba menjalankan perintah salin dari Google Cloud Shell, Anda mungkin menemukan error seperti berikut:
BigQuery error in cp operation: VPC Service Controls: Request is prohibited by organization's policy
Penggunaan Cloud Shell dari Google Cloud konsol dengan VPC SC tidak didukung, karena dianggap sebagai permintaan di luar perimeter layanan dan akses ke data yang dilindungi oleh Kontrol Layanan VPC ditolak. Untuk mengatasi masalah ini, luncurkan dan hubungkan ke Cloud Shell secara lokal dengan Google Cloud CLI.
Error: Latest categories are incompatible with schema
Jika menjalankan perintah penyalinan dari Google Cloud Shell, Anda mungkin menerima error seperti berikut:
Latest categories are incompatible with schema at TIMESTAMP
Ada beberapa kemungkinan penyebab error ini:
- Skema tabel tujuan berbeda dengan skema tabel asli (kolom tambahan diizinkan selama tidak ada tag kebijakan tingkat kolom yang terlampir).
- Tag kebijakan tingkat kolom tabel tujuan dikonfigurasi secara berbeda dari tabel sumber.
Untuk mengatasi error ini:
- Pastikan skema tabel tujuan identik, dan pastikan tidak ada kolom di tabel asli yang tidak ada di tabel tujuan.
- Hapus semua tag kebijakan tingkat kolom dari tabel tujuan yang tidak ada dalam skema tabel asli.
Error: BigQuery error in cp operation: Invalid time travel timestamp
Jika menjalankan perintah bq copy dari Google Cloud Shell, Anda mungkin menerima
error seperti berikut:
BigQuery error in cp operation: Invalid time travel timestamp 1744343690000 for table PROJECT_ID:DATASET_ID.TABLE_ID@1744343690000. Cannot read before 1744843691075
Error ini menunjukkan bahwa Anda mencoba memulihkan data dari status tabel sebelum periode perjalanan waktu atau sebelum tabel dibuat. Fitur ini tidak didukung. Pesan error berisi stempel waktu terbaru yang dapat digunakan untuk membaca data tabel. Gunakan stempel waktu dalam error di perintah bq copy.
Error ini juga dapat terjadi saat Anda memberikan nilai stempel waktu negatif, misalnya, TABLE@-1744963620000. Sebagai gantinya, gunakan offset waktu yang dapat digunakan
dengan tanda -.
BigQuery error in cp operation: Invalid time travel timestamp 584878816 for table PROJECT_ID:DATASET_ID.TABLE_ID@584878816. Cannot read before 1744843691075
Pesan error ini menunjukkan bahwa perintah bq cp berisi nilai stempel waktu negatif sebagai offset, dan Anda mencoba membaca tabel di CURRENT_TIMESTAMP - PROVIDED TIMESTAMP. Nilai ini biasanya berupa stempel waktu
pada tahun 1970. Untuk mengatasi masalah ini, verifikasi nilai offset atau stempel waktu saat Anda menetapkan nilai dekorator tabel dan gunakan tanda - dengan tepat.
Langkah berikutnya
- Pelajari cara membuat dan menggunakan tabel.
- Pelajari cara mengelola tabel.
- Pelajari cara mengubah skema tabel.
- Pelajari cara menggunakan data tabel.