Menerapkan rekomendasi partisi dan cluster
Dokumen ini menunjukkan cara menerapkan rekomendasi partisi dan cluster ke tabel BigQuery Anda.
Batasan
Pemberi rekomendasi partisi dan cluster tidak mendukung tabel BigQuery dengan SQL lama. Saat membuat rekomendasi, pemberi rekomendasi mengecualikan kueri legacy SQL dalam analisisnya. Selain itu, menerapkan rekomendasi partisi pada tabel BigQuery dengan legacy SQL akan merusak alur kerja legacy SQL di tabel tersebut.
Sebelum menerapkan rekomendasi partisi, migrasikan alur kerja legacy SQL ke GoogleSQL.
Pemberi rekomendasi pembuatan partisi dan pengelompokan tidak mendukung resource yang disimpan di region berikut:
europe-central2
,europe-west8
,europe-west9
,europe-west12
,europe-north1
,europe-southwest1
us-east1
,us-east5
,us-south1
me-central1
,me-central2
,me-west1
australia-southeast2
southamerica-west1
Sebelum memulai
- Pastikan Recommender API diaktifkan.
- Pastikan Anda memiliki izin Identity and Access Management (IAM) yang diperlukan.
Menerapkan rekomendasi cluster
Anda dapat menerapkan rekomendasi cluster dengan menerapkan cluster ke salinan tabel asli, menerapkannya langsung ke tabel asli, atau menggunakan tampilan terwujud.
Menerapkan rekomendasi cluster ke tabel yang disalin
Saat menerapkan rekomendasi cluster ke tabel BigQuery, Anda dapat menyalin tabel asli terlebih dahulu, lalu menerapkan rekomendasi tersebut ke tabel yang disalin. Metode ini memastikan data asli Anda dipertahankan jika Anda perlu me-roll back perubahan ke konfigurasi cluster.
Anda dapat menggunakan metode ini untuk menerapkan rekomendasi cluster ke tabel yang tidak dipartisi dan dipartisi.
Di Konsol Google Cloud, buka halaman BigQuery.
Di editor kueri, buat tabel kosong dengan metadata yang sama (termasuk spesifikasi cluster) dari tabel asli menggunakan operator
LIKE
:CREATE TABLE DATASET.COPIED_TABLE LIKE DATASET.ORIGINAL_TABLE
Ganti kode berikut:
DATASET
: nama set data yang berisi tabel—misalnya,mydataset
COPIED_TABLE
: nama untuk tabel yang disalin—misalnya,copy_mytable
ORIGINAL_TABLE
: nama tabel asli Anda—misalnya,mytable
Di Konsol Google Cloud, buka Cloud Shell Editor.
Di Cloud Shell Editor, perbarui spesifikasi pengelompokkan dari tabel yang disalin agar sesuai dengan pengelompokan yang direkomendasikan menggunakan perintah
bq update
:bq update --clustering_fields=CLUSTER_COLUMN DATASET.COPIED_TABLE
Ganti
CLUSTER_COLUMN
dengan kolom yang sedang Anda kelompokkan—misalnya,mycolumn
.Anda juga dapat memanggil metode API
tables.update
atautables.patch
untuk mengubah spesifikasi cluster.Di editor kueri, ambil skema tabel dengan konfigurasi partisi dan cluster tabel asli, jika ada partisi atau cluster. Anda dapat mengambil skema dengan melihat tampilan
INFORMATION_SCHEMA.TABLES
dari tabel asli:SELECT ddl FROM DATASET.INFORMATION_SCHEMA.TABLES WHERE table_name = 'DATASET.ORIGINAL_TABLE;'
Output-nya adalah pernyataan bahasa definisi data lengkap (DDL) dari ORIGINAL_TABLE, termasuk klausa
PARTITION BY
. Untuk mengetahui informasi selengkapnya tentang argumen dalam output DDL Anda, lihat pernyataanCREATE TABLE
.Output DDL menunjukkan jenis partisi dalam tabel asli:
Jenis partisi Contoh output Tidak dipartisi Klausa PARTITION BY
tidak ada.Dipartisi menurut kolom tabel PARTITION BY c0
PARTITION BY DATE(c0)
PARTITION BY DATETIME_TRUNC(c0, MONTH)
Dipartisi menurut waktu penyerapan PARTITION BY _PARTITIONDATE
PARTITION BY DATETIME_TRUNC(_PARTITIONTIME, MONTH)
Menyerap data ke dalam tabel yang disalin. Proses yang digunakan didasarkan pada jenis partisi.
- Jika tabel asli tidak dipartisi atau dipartisi oleh kolom tabel,
serap data dari tabel asli ke tabel yang disalin:
INSERT INTO DATASET.COPIED_TABLE SELECT * FROM DATASET.ORIGINAL_TABLE
Jika tabel asli dipartisi menurut waktu penyerapan, ikuti langkah-langkah berikut:
Ambil daftar kolom untuk membentuk ekspresi penyerapan data dengan menggunakan tampilan
INFORMATION_SCHEMA.COLUMNS
:SELECT ARRAY_TO_STRING(( SELECT ARRAY( SELECT column_name FROM DATASET.INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'ORIGINAL_TABLE')), ", ")
Output-nya adalah daftar nama kolom yang dipisahkan koma.
Menyerap data dari tabel asli ke tabel salinan:
INSERT DATASET.COPIED_TABLE (COLUMN_NAMES, _PARTITIONTIME) SELECT *, _PARTITIONTIME FROM DATASET.ORIGINAL_TABLE
Ganti
COLUMN_NAMES
dengan daftar kolom yang merupakan output pada langkah sebelumnya, yang dipisahkan dengan koma—misalnya,col1, col2, col3
.
Anda sekarang memiliki tabel salinan yang dikelompokkan dengan data yang sama seperti tabel asli. Pada langkah berikutnya, Anda akan mengganti tabel asli dengan tabel yang baru dikelompokkan.
- Jika tabel asli tidak dipartisi atau dipartisi oleh kolom tabel,
serap data dari tabel asli ke tabel yang disalin:
Mengganti nama tabel asli menjadi tabel cadangan:
ALTER TABLE DATASET.ORIGINAL_TABLE RENAME TO DATASET.BACKUP_TABLE
Ganti
BACKUP_TABLE
dengan nama untuk tabel cadangan Anda—misalnya,backup_mytable
.Ganti nama tabel salinan menjadi tabel asli:
ALTER TABLE DATASET.COPIED_TABLE RENAME TO DATASET.ORIGINAL_TABLE
Tabel asli Anda sekarang dikelompokkan sesuai dengan rekomendasi cluster.
- Akses dan izin, seperti izin IAM, akses tingkat baris, atau akses tingkat kolom.
- Artefak tabel seperti clone tabel, snapshot tabel, atau indeks penelusuran.
- Status setiap proses tabel yang sedang berlangsung, seperti tampilan terwujud atau tugas apa pun yang dijalankan saat Anda menyalin tabel.
- Kemampuan untuk mengakses data tabel historis menggunakan perjalanan waktu.
- Metadata apa pun yang terkait dengan tabel asli—misalnya,
table_option_list
ataucolumn_option_list
. Untuk mengetahui informasi selengkapnya, lihat Pernyataan bahasa definisi data.
Jika muncul masalah, Anda harus memigrasikan artefak yang terpengaruh secara manual ke tabel baru.
Setelah meninjau tabel yang dikelompokkan, Anda dapat memilih untuk menghapus tabel cadangan dengan perintah berikut:DROP TABLE DATASET.BACKUP_TABLE
Menerapkan rekomendasi cluster secara langsung
Anda dapat menerapkan rekomendasi cluster langsung ke tabel BigQuery yang ada. Metode ini lebih cepat daripada menerapkan rekomendasi ke tabel yang disalin, tetapi tidak mempertahankan tabel cadangan.
Ikuti langkah-langkah berikut untuk menerapkan spesifikasi pengelompokan baru ke tabel yang tidak dipartisi atau dipartisi.
Pada alat bq, perbarui spesifikasi pengelompokan tabel agar sesuai dengan pengelompokan baru:
bq update --clustering_fields=CLUSTER_COLUMN DATASET.ORIGINAL_TABLE
Ganti kode berikut:
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
atautables.patch
untuk mengubah spesifikasi pengelompokan.Untuk mengelompokkan semua baris sesuai dengan spesifikasi pengelompokan baru, jalankan pernyataan
UPDATE
berikut:UPDATE DATASET.ORIGINAL_TABLE SET CLUSTER_COLUMN=CLUSTER_COLUMN WHERE true
Menerapkan rekomendasi cluster menggunakan tampilan terwujud
Anda dapat membuat tampilan terwujud dari tabel untuk menyimpan data dari tabel asli dengan menerapkan rekomendasi. Menggunakan tampilan terwujud untuk menerapkan rekomendasi memastikan bahwa data yang dikelompokkan terus diperbarui menggunakan pembaruan otomatis. Ada pertimbangan harga saat Anda membuat kueri, mempertahankan, dan menyimpan tampilan terwujud. Untuk mempelajari cara membuat tampilan terwujud yang dikelompokkan, lihat Tampilan terwujud yang dikelompokkan.Menerapkan rekomendasi partisi
Anda dapat menerapkan rekomendasi partisi dengan menerapkan partisi ke salinan tabel asli.
Terapkan rekomendasi partisi ke tabel yang disalin
Saat menerapkan rekomendasi partisi ke tabel BigQuery, Anda dapat menyalin tabel asli terlebih dahulu, lalu menerapkan rekomendasi tersebut ke tabel yang disalin. Pendekatan ini memastikan data asli tetap dipertahankan jika Anda perlu me-roll back partisi.
Prosedur berikut menggunakan contoh rekomendasi untuk mempartisi tabel berdasarkan
unit waktu partisi DAY
.
Buat tabel yang disalin menggunakan rekomendasi partisi:
CREATE TABLE DATASET.COPIED_TABLE PARTITION BY DATE_TRUNC(PARTITION_COLUMN, DAY) AS SELECT * FROM DATASET.ORIGINAL_TABLE
Ganti kode berikut:
DATASET
: nama set data yang berisi tabel—misalnya,mydataset
COPIED_TABLE
: nama untuk tabel yang disalin—misalnya,copy_mytable
PARTITION_COLUMN
: kolom tempat Anda membuat partisi—misalnya,mycolumn
Untuk informasi selengkapnya tentang cara membuat tabel yang dipartisi, lihat Membuat tabel yang dipartisi.
Mengganti nama tabel asli menjadi tabel cadangan:
ALTER TABLE DATASET.ORIGINAL_TABLE RENAME TO DATASET.BACKUP_TABLE
Ganti
BACKUP_TABLE
dengan nama untuk tabel cadangan Anda—misalnya,backup_mytable
.Ganti nama tabel salinan menjadi tabel asli:
ALTER TABLE DATASET.COPIED_TABLE RENAME TO DATASET.ORIGINAL_TABLE
Tabel asli Anda kini dipartisi menurut rekomendasi partisi.
- Akses dan izin, seperti izin IAM, akses tingkat baris, atau akses tingkat kolom.
- Artefak tabel seperti clone tabel, snapshot tabel, atau indeks penelusuran.
- Status setiap proses tabel yang sedang berlangsung, seperti tampilan terwujud atau tugas apa pun yang dijalankan saat Anda menyalin tabel.
- Kemampuan untuk mengakses data tabel historis menggunakan perjalanan waktu.
- Metadata apa pun yang terkait dengan tabel asli—misalnya,
table_option_list
ataucolumn_option_list
. Untuk mengetahui informasi selengkapnya, lihat Pernyataan bahasa definisi data. - Kemampuan menggunakan legacy SQL untuk menulis hasil kueri ke dalam tabel yang dipartisi. Penggunaan legacy SQL tidak sepenuhnya didukung dalam tabel yang dipartisi. Salah satu solusinya adalah memigrasikan alur kerja legacy SQL ke GoogleSQL sebelum menerapkan rekomendasi partisi.
Jika muncul masalah, Anda harus memigrasikan artefak yang terpengaruh secara manual ke tabel baru.
Setelah meninjau tabel yang dipartisi, Anda dapat memilih untuk menghapus tabel cadangan dengan perintah berikut:DROP TABLE DATASET.BACKUP_TABLE
Harga
Saat menerapkan rekomendasi ke tabel, Anda dapat dikenai biaya berikut:
- Biaya pemrosesan. Saat menerapkan rekomendasi, Anda akan mengeksekusi kueri bahasa definisi data (DDL) atau bahasa pengolahan data (DML) ke project BigQuery.
- Biaya penyimpanan. Jika Anda menggunakan metode penyalinan tabel, Anda menggunakan penyimpanan tambahan untuk tabel yang disalin (atau cadangan).
Biaya pemrosesan dan penyimpanan standar berlaku, tergantung pada akun penagihan yang terkait dengan project. Untuk informasi lebih lanjut, lihat Harga BigQuery.