Mengelola tabel yang dikelompokkan

Dokumen ini menjelaskan cara mendapatkan informasi tentang dan mengontrol akses ke tabel berklaster di BigQuery.

Untuk informasi selengkapnya, lihat referensi berikut:

Sebelum memulai

Untuk mendapatkan informasi tentang tabel, Anda harus memiliki izin bigquery.tables.get. Peran IAM bawaan berikut menyertakan izin bigquery.tables.get:

  • roles/bigquery.metadataViewer
  • roles/bigquery.dataViewer
  • roles/bigquery.dataOwner
  • roles/bigquery.dataEditor
  • roles/bigquery.admin

Selain itu, jika pengguna memiliki izin bigquery.datasets.create, saat pengguna tersebut membuat set data, ia diberi akses bigquery.dataOwner. Akses bigquery.dataOwner memberi pengguna kemampuan untuk mendapatkan informasi tentang tabel dalam set data.

Untuk mengetahui informasi lebih lanjut tentang peran dan izin IAM di BigQuery, baca Peran dan izin bawaan.

Mengontrol akses ke tabel yang dikelompokkan

Untuk mengonfigurasi akses ke tabel dan tabel virtual, Anda dapat memberikan peran IAM ke entity di tingkat berikut, yang tercantum sesuai urutan rentang resource yang diizinkan (terbesar hingga terkecil):

  • tingkat tinggi dalam hierarki resource seperti tingkat project, folder, atau organisasiGoogle Cloud
  • tingkat set data
  • tingkat tabel atau tabel virtual

Anda juga dapat membatasi akses data dalam tabel menggunakan metode berikut:

Akses dengan resource apa pun yang dilindungi oleh IAM bersifat tambahan. Misalnya, jika suatu entity tidak memiliki akses di tingkat tinggi seperti project, Anda dapat memberikan akses ke entity tersebut di tingkat set data, lalu entity akan memiliki akses ke tabel dan tabel virtual dalam set data. Demikian pula, jika entity tidak memiliki akses di tingkat tinggi atau tingkat set data, Anda dapat memberikan akses ke entity di tingkat tabel atau tabel virtual.

Memberikan peran IAM di tingkat yang lebih tinggi dalam hierarki resource Google Cloud, seperti tingkat project, folder, atau organisasi, akan memberi entity akses ke berbagai resource.Google CloudMisalnya, memberikan peran ke suatu entity di tingkat project akan memberikan izin entity yang berlaku untuk semua set data di seluruh project.

Memberikan peran di tingkat set data akan menentukan operasi yang diizinkan untuk dilakukan oleh entity di tabel dan tabel virtual di set data tertentu tersebut, meskipun entity tidak memiliki akses di tingkat yang lebih tinggi. Untuk informasi tentang cara mengonfigurasi kontrol akses tingkat set data, baca Mengontrol akses ke set data.

Memberikan peran di tingkat tabel atau tabel virtual akan menentukan operasi yang diizinkan untuk dilakukan oleh entity pada tabel dan tabel virtual tertentu, meskipun jika entity tersebut tidak memiliki akses di tingkat yang lebih tinggi. Untuk informasi tentang cara mengonfigurasi kontrol akses tingkat tabel, lihat Mengontrol akses ke tabel dan tabel virtual.

Anda juga dapat membuat peran khusus IAM. Jika Anda membuat peran khusus, izin yang diberikan bergantung pada operasi tertentu yang Anda inginkan untuk dapat dilakukan oleh entity.

Anda tidak dapat menetapkan izin "tolak" pada resource apa pun yang dilindungi oleh IAM.

Untuk informasi selengkapnya tentang peran dan izin, lihat Memahami peran dalam dokumentasi IAM serta Peran dan izin IAM BigQuery.

Mendapatkan informasi tentang tabel yang dikelompokkan

Pilih salah satu opsi berikut:

Konsol

  1. Di konsol Google Cloud , buka panel Resources.

  2. Klik nama set data Anda untuk meluaskannya, lalu klik nama tabel yang ingin Anda lihat.

  3. Klik Details.

    Detail tabel ditampilkan, termasuk kolom pengelompokan.

    Detail tabel.

SQL

Untuk tabel yang dikelompokkan, Anda dapat membuat kueri kolom CLUSTERING_ORDINAL_POSITION di tabel virtual INFORMATION_SCHEMA.COLUMNS untuk menemukan offset diindeks 1 pada kolom dalam pengelompokan kolom tabel:

  1. Di Google Cloud konsol, buka halaman BigQuery.

    Buka BigQuery

  2. Di editor kueri, masukkan pernyataan berikut:

    CREATE TABLE mydataset.data (column1 INT64, column2 INT64)
    CLUSTER BY column1, column2;
    SELECT
      column_name, clustering_ordinal_position
    FROM
      mydataset.INFORMATION_SCHEMA.COLUMNS;

  3. Klik Run.

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

Posisi ordinal pengelompokan adalah 1 untuk column1 dan 2 untuk column2. Metadata tabel lainnya tersedia melalui tabel virtual TABLES, TABLE_OPTIONS, COLUMNS, dan COLUMN_FIELD_PATH di INFORMATION_SCHEMA.

bq

Berikan perintah bq show untuk menampilkan semua informasi tabel. Gunakan flag --schema untuk hanya menampilkan informasi skema tabel. Flag --format dapat digunakan untuk mengontrol output.

Jika Anda mendapatkan informasi tentang tabel dalam project selain project default Anda, tambahkan project ID ke set data dalam format berikut: project_id:dataset.

bq show \
    --schema \
    --format=prettyjson \
    PROJECT_ID:DATASET.TABLE

Ganti yang berikut ini:

  • PROJECT_ID: project ID Anda
  • DATASET: nama set data
  • TABLE: nama tabel

Contoh:

Masukkan perintah berikut untuk menampilkan semua informasi tentang myclusteredtable di mydataset. mydataset di project default Anda.

bq show --format=prettyjson mydataset.myclusteredtable

Output akan terlihat seperti contoh:

{
  "clustering": {
    "fields": [
      "customer_id"
    ]
  },
...
}

API

Panggil metode bigquery.tables.get dan berikan parameter yang relevan.

Mencantumkan tabel yang dikelompokkan dalam set data

Izin yang diperlukan untuk mencantumkan tabel yang dikelompokkan dan langkah-langkah untuk mencantumkannya sama seperti tabel standar. Untuk mengetahui informasi selengkapnya, lihat Mencantumkan tabel dalam set data.

Mengubah spesifikasi pengelompokan

Anda dapat mengubah atau menghapus spesifikasi pengelompokan tabel, atau mengubah kumpulan kolom yang dikelompokkan dalam tabel yang dikelompokkan. Metode memperbarui kumpulan kolom pengelompokan ini berguna untuk tabel yang menggunakan streaming insert berkelanjutan karena tabel tersebut tidak dapat ditukar dengan mudah dengan metode lain.

Ikuti langkah-langkah berikut untuk menerapkan spesifikasi pengelompokan baru ke tabel yang tidak berpartisi atau berpartisi.

  1. Pada alat bq, perbarui spesifikasi pengelompokan tabel agar sesuai dengan pengelompokan baru:

     bq update --clustering_fields=CLUSTER_COLUMN DATASET.ORIGINAL_TABLE 

    Ganti yang berikut ini:

    • CLUSTER_COLUMN: kolom tempat Anda melakukan pengelompokan—misalnya, mycolumn
    • DATASET: nama set data yang berisi tabel—misalnya, mydataset
    • ORIGINAL_TABLE: nama tabel asli—misalnya, mytable

    Anda juga dapat memanggil metode API tables.update atau tables.patch untuk mengubah spesifikasi pengelompokan.

  2. Untuk mengelompokkan semua baris sesuai dengan spesifikasi pengelompokan baru, jalankan pernyataan UPDATE berikut:

    UPDATE DATASET.ORIGINAL_TABLE SET CLUSTER_COLUMN=CLUSTER_COLUMN WHERE true

Langkah berikutnya