Membuat clone tabel

Dokumen ini menjelaskan cara menyalin tabel ke clone tabel menggunakan pernyataan SQL CREATE TABLE CLONE, perintah bq cp, atau panggilan API jobs.insert. Dokumen ini ditujukan bagi pengguna yang sudah memahami clone tabel.

Izin dan peran

Bagian ini menjelaskan izin Identity and Access Management (IAM) bahwa Anda perlu membuat clone tabel, danperan IAM yang telah ditetapkan yang memberikan izin akses tersebut.

Izin

Untuk membuat clone tabel, Anda memerlukan izin berikut:

Izin Resource
Semua yang berikut ini:

bigquery.tables.get
bigquery.tables.getData
Tabel yang ingin Anda buat clone-nya.
bigquery.tables.create
bigquery.tables.updateData
Set data yang berisi clone tabel.

Peran

Peran BigQuery yang telah ditetapkan dan menyediakan izin yang diperlukan adalah sebagai berikut:

Role Resource
Salah satu dari yang berikut ini:

bigquery.dataViewer
bigquery.dataEditor
bigquery.dataOwner
bigquery.admin
Tabel yang ingin Anda buat clone-nya.
Salah satu dari yang berikut ini:

bigquery.dataEditor
bigquery.dataOwner
bigquery.admin
Set data yang berisi clone tabel baru.

Membuat clone tabel

Gunakan GoogleSQL, alat command line bq, atau BigQuery API untuk membuat clone tabel.

SQL

Untuk meng-clone tabel, gunakan pernyataan CREATE TABLE CLONE.

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Di editor kueri, masukkan pernyataan berikut:

    CREATE TABLE
    myproject.myDataset_backup.myTableClone
    CLONE myproject.myDataset.myTable;

  3. Klik Run.

Untuk informasi selengkapnya tentang cara menjalankan kueri, lihat Menjalankan kueri interaktif.

Ganti kode berikut:

  • PROJECT adalah project ID dari project target. Project ini harus berada dalam organisasi yang sama dengan project yang berisi tabel yang Anda clone.
  • DATASET adalah nama set data target. Set data ini harus berada di region yang sama dengan set data yang berisi tabel yang Anda clone.
  • CLONE_NAME adalah nama clone tabel yang Anda buat.

bq

Gunakan perintah bq cp dengan flag --clone:

Buka Cloud Shell

bq cp --clone -n project1:myDataset.myTable PROJECT:DATASET.CLONE_NAME

Ganti kode berikut:

  • PROJECT adalah project ID dari project target. Project ini harus berada di organisasi yang sama dengan project yang berisi tabel yang Anda clone.
  • DATASET adalah nama set data target. Set data ini harus berada di region yang sama dengan set data yang berisi tabel yang Anda clone. Jika {i>dataset<i} tidak berada di region yang sama dengan {i>dataset<i} yang berisi tabel yang Anda clone maka tabel lengkap akan disalin.
  • CLONE_NAME adalah nama clone tabel yang Anda buat.

Jika membuat clone dalam project yang sama dengan tabel dasar, Anda dapat melewati langkah menentukan project, seperti ditunjukkan berikut ini:

bq cp --clone -n myDataset.myTable DATASET.CLONE_NAME

API

Panggil metode jobs.insert dengan kolom operationType yang ditetapkan ke CLONE:

Parameter Nilai
projectId Project ID dari project yang menjalankan tugas.
Isi permintaan
{
  "configuration": {
    "copy": {
      "sourceTables": [
        {
          "projectId": "myProject",
          "datasetId": "myDataset",
          "tableId": "myTable"
        }
      ],
      "destinationTable": {
        "projectId": "PROJECT",
        "datasetId": "DATASET",
        "tableId": "CLONE_NAME"
      },
      "operationType": "CLONE",
      "writeDisposition": "WRITE_EMPTY",
    }
  }
}

Ganti kode berikut:

  • PROJECT adalah project ID dari project target. Project ini harus berada dalam organisasi yang sama dengan project yang berisi tabel yang Anda clone.
  • DATASET adalah nama set data target. Set data ini harus berada di region yang sama dengan set data yang berisi tabel yang Anda clone. Jika {i>dataset<i} tidak berada di region yang sama dengan {i>dataset<i} yang berisi tabel yang Anda kloning, tabel lengkap akan disalin.
  • CLONE_NAME adalah nama clone tabel yang Anda buat.

Kontrol akses

Saat Anda membuat clone tabel, akses ke clone tabel ditetapkan sebagai berikut:

  • Kebijakan akses tingkat baris disalin dari tabel dasar ke clone tabel.
  • Kebijakan akses tingkat kolom disalin dari tabel dasar ke clone tabel.
  • Akses tingkat tabel ditentukan sebagai berikut:

    • Jika clone tabel menimpa tabel yang ada, akses tingkat tabel untuk tabel yang ada akan dipertahankan. Tag tidak disalin dari tabel dasar.
    • Jika clone tabel adalah resource baru, akses tingkat tabel untuk clone tabel tersebut ditentukan oleh kebijakan akses dari set data tempat clone tabel dibuat. Selain itu, tag akan disalin dari tabel dasar ke clone tabel.

Langkah selanjutnya

  • Setelah membuat clone tabel, Anda dapat menggunakannya seperti menggunakan tabel standar. Untuk informasi lebih lanjut, lihat Mengelola tabel.