Mengelola rekomendasi partisi dan cluster

Dokumen ini menjelaskan cara kerja pemberi rekomendasi partisi dan cluster, cara melihat rekomendasi dan insight Anda, serta cara menerapkan rekomendasi partisi dan cluster.

Cara kerja pemberi rekomendasi

Pemberi rekomendasi partisi dan cluster BigQuery menghasilkan rekomendasi partisi atau cluster untuk mengoptimalkan tabel BigQuery Anda. Pemberi rekomendasi menganalisis alur kerja di tabel BigQuery Anda dan menawarkan rekomendasi untuk lebih mengoptimalkan alur kerja dan membuat kueri biaya dengan lebih baik menggunakan partisi tabel atau pengelompokan tabel.

Untuk informasi selengkapnya tentang layanan Pemberi rekomendasi, lihat Ringkasan pemberi rekomendasi.

Pemberi rekomendasi partisi dan cluster menggunakan data eksekusi workload project dari 30 hari terakhir untuk menganalisis setiap tabel BigQuery guna menemukan konfigurasi partisi dan pengelompokan yang kurang optimal. Pemberi rekomendasi juga menggunakan machine learning untuk memprediksi seberapa banyak eksekusi workload yang dapat dioptimalkan dengan konfigurasi partisi atau cluster yang berbeda. Jika pemberi rekomendasi mendapati bahwa partisi atau pengelompokan tabel menghasilkan penghematan yang signifikan, pemberi rekomendasi akan menghasilkan rekomendasi. Pemberi rekomendasi pembuatan partisi dan cluster akan menghasilkan jenis rekomendasi berikut:

Jenis tabel yang ada Subjenis rekomendasi Contoh rekomendasi
Tidak dipartisi, tidak dikelompokkan Partisi "Hemat sekitar 64 slot jam per bulan dengan membuat partisi pada column_C by DAY"
Tidak dipartisi, tidak dikelompokkan Cluster "Hemat sekitar 64 jam slot per bulan dengan membuat cluster pada column_C"
Dipartisi, tidak dikelompokkan Cluster "Hemat sekitar 64 jam slot per bulan dengan membuat cluster pada column_C"

Setiap rekomendasi terdiri dari tiga bagian:

  • Panduan untuk partisi atau cluster tabel tertentu
  • Kolom tertentu dalam tabel untuk melakukan partisi atau cluster
  • Estimasi penghematan bulanan untuk penerapan rekomendasi

Untuk menghitung potensi penghematan workload, pemberi rekomendasi mengasumsikan bahwa data histori workload eksekusi dari 30 hari terakhir mewakili workload mendatang.

API pemberi rekomendasi juga menampilkan informasi workload tabel dalam bentuk insight. Insight adalah temuan yang membantu Anda memahami workload project, yang memberikan lebih banyak konteks tentang bagaimana rekomendasi partisi atau cluster dapat meningkatkan biaya workload.

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.

  • BigQuery tidak mendukung perubahan skema partisi tabel yang sudah ada. Anda hanya dapat mengubah partisi tabel pada salinan tabel. Untuk informasi selengkapnya, lihat Menerapkan rekomendasi partisi.

Lokasi

Pemberi rekomendasi partisi dan cluster tersedia di lokasi pemrosesan berikut:

Deskripsi region Nama region Detail
Asia Pasifik
Delhi asia-south2
Hong Kong asia-east2
Jakarta asia-southeast2
Mumbai asia-south1
Osaka asia-northeast2
Seoul asia-northeast3
Singapura asia-southeast1
Sydney australia-southeast1
Taiwan asia-east1
Tokyo asia-northeast1
Eropa
Belgia europe-west1 ikon daun CO Rendah2
Berlin europe-west10 ikon daun CO Rendah2
Multi-region Uni Eropa eu
Frankfurt europe-west3 ikon daun CO Rendah2
London europe-west2 ikon daun CO Rendah2
Belanda europe-west4 ikon daun CO Rendah2
Zürich europe-west6 ikon daun CO Rendah2
Amerika
Iowa us-central1 ikon daun CO2 Rendah
Las Vegas us-west4
Los Angeles us-west2
Montréal northamerica-northeast1 ikon daun CO2 Rendah
Northern Virginia us-east4
Oregon us-west1 ikon daun CO2 Rendah
Salt Lake City us-west3
Sao Paulo southamerica-east1 ikon daun CO Rendah2
Toronto northamerica-northeast2 ikon daun CO Rendah2
Multi-region AS us

Sebelum memulai

Izin yang diperlukan

Untuk mendapatkan izin yang diperlukan untuk mengakses rekomendasi partisi dan cluster, minta administrator untuk memberi Anda peran IAM BigQuery Partitioning Clustering Recommender Viewer (roles/recommender.bigqueryPartitionClusterViewer). Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

Peran bawaan ini berisi izin yang diperlukan untuk mengakses rekomendasi partisi dan cluster. Untuk melihat izin yang benar-benar diperlukan, luaskan bagian Izin yang diperlukan:

Izin yang diperlukan

Izin berikut diperlukan untuk mengakses rekomendasi partisi dan cluster:

  • recommender.bigqueryPartitionClusterRecommendations.get
  • recommender.bigqueryPartitionClusterRecommendations.list

Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.

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

Melihat rekomendasi

Bagian ini menjelaskan cara melihat rekomendasi dan insight partisi dan cluster menggunakan Konsol Google Cloud, Google Cloud CLI, atau Recommender API.

Pilih salah satu opsi berikut:

Konsol

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Untuk membuka tab rekomendasi, klik Rekomendasi > Lihat semua rekomendasi.

    Klik Rekomendasi untuk melihat semua rekomendasi.

    Tab rekomendasi mencantumkan semua rekomendasi yang tersedia untuk project Anda.

  3. Di panel Optimalkan biaya workload BigQuery, klik Lihat semua.

    Tabel rekomendasi biaya mencantumkan semua rekomendasi yang dihasilkan untuk project saat ini. Misalnya, screenshot berikut menunjukkan bahwa pemberi rekomendasi menganalisis tabel example_table, lalu merekomendasikan pengelompokan kolom example_column untuk menyimpan perkiraan jumlah byte dan slot.

    Tabel rekomendasi dengan rekomendasi partisi dan cluster.

  4. Untuk melihat informasi selengkapnya tentang insight dan rekomendasi tabel, klik rekomendasi.

gcloud

Untuk melihat rekomendasi partisi atau cluster untuk project tertentu, gunakan perintah gcloud recommender recommendations list:

gcloud recommender recommendations list \
    --project=PROJECT_NAME \
    --location=REGION_NAME \
    --recommender=google.bigquery.table.PartitionClusterRecommender \
    --format=FORMAT_TYPE \

Ganti kode berikut:

  • PROJECT_NAME: nama project yang berisi tabel BigQuery Anda
  • REGION_NAME: region tempat project Anda berada
  • FORMAT_TYPE: format output gcloud CLI yang didukung—misalnya, JSON
Tabel berikut menjelaskan kolom penting dari respons API pemberi rekomendasi:

Properti Relevan untuk subjenis Deskripsi
recommenderSubtype Partisi atau cluster Menunjukkan jenis rekomendasi.
content.overview.partitionColumn Partisi Nama kolom partisi yang direkomendasikan.
content.overview.partitionTimeUnit Partisi Unit waktu partisi yang direkomendasikan. Misalnya, DAY berarti rekomendasinya adalah memiliki partisi harian di kolom yang direkomendasikan.
content.overview.clusterColumns Cluster Nama kolom cluster yang direkomendasikan.

Untuk melihat insight tabel menggunakan gcloud CLI, gunakan perintah gcloud recommender insights list:

gcloud recommender insights list \
    --project=PROJECT_NAME \
    --location=REGION_NAME \
    --insight-type=google.bigquery.table.StatsInsight \
    --format=FORMAT_TYPE \

Ganti kode berikut:

  • PROJECT_NAME: nama project yang berisi tabel BigQuery Anda
  • REGION_NAME: region tempat project Anda berada
  • FORMAT_TYPE: format output gcloud CLI yang didukung—misalnya, JSON
Tabel berikut menjelaskan kolom penting dari respons API insight:

Properti Relevan untuk subjenis Deskripsi
content.existingPartitionColumn Cluster Kolom partisi yang ada, jika ada
content.tableSizeTb Semua Ukuran tabel dalam terabyte
content.bytesReadMonthly Semua Byte bulanan yang dibaca dari tabel
content.slotMsConsumedMonthly Semua Slot bulanan dalam milidetik yang terpakai oleh workload yang berjalan di tabel
content.queryJobsCountMonthly Semua Jumlah tugas bulanan yang berjalan di tabel

REST API

Untuk melihat rekomendasi partisi atau cluster untuk project tertentu, gunakan REST API. Dengan setiap perintah, Anda harus menyediakan token autentikasi, yang bisa Anda dapatkan menggunakan gcloud CLI. Untuk mengetahui informasi lebih lanjut mengenai cara mendapatkan token autentikasi, baca Metode untuk mendapatkan token ID.

Anda dapat menggunakan permintaan curl list untuk melihat semua rekomendasi untuk project tertentu:

curl
    -H "Authorization: Bearer $GCLOUD_AUTH_TOKEN"
    -H "x-goog-user-project: PROJECT_NAME" https://recommender.googleapis.com/v1/projects/my-project/locations/us/recommenders/google.bigquery.table.PartitionClusterRecommender/recommendations

Ganti kode berikut:

  • GCLOUD_AUTH_TOKEN: nama token akses gcloud CLI yang valid
  • PROJECT_NAME: nama project yang berisi tabel BigQuery Anda
Tabel berikut menjelaskan kolom penting dari respons API pemberi rekomendasi:

Properti Relevan untuk subjenis Deskripsi
recommenderSubtype Partisi atau cluster Menunjukkan jenis rekomendasi.
content.overview.partitionColumn Partisi Nama kolom partisi yang direkomendasikan.
content.overview.partitionTimeUnit Partisi Unit waktu partisi yang direkomendasikan. Misalnya, DAY berarti rekomendasinya adalah memiliki partisi harian di kolom yang direkomendasikan.
content.overview.clusterColumns Cluster Nama kolom cluster yang direkomendasikan.

Untuk melihat insight tabel menggunakan REST API, jalankan perintah berikut:

curl
-H "Authorization: Bearer $GCLOUD_AUTH_TOKEN"
-H "x-goog-user-project: PROJECT_NAME" https://recommender.googleapis.com/v1/projects/my-project/locations/us/insightTypes/google.bigquery.table.StatsInsight/insights

Ganti kode berikut:

  • GCLOUD_AUTH_TOKEN: nama token akses gcloud CLI yang valid
  • PROJECT_NAME: nama project yang berisi tabel BigQuery Anda
Tabel berikut menjelaskan kolom penting dari respons API insight:

Properti Relevan untuk subjenis Deskripsi
content.existingPartitionColumn Cluster Kolom partisi yang ada, jika ada
content.tableSizeTb Semua Ukuran tabel dalam terabyte
content.bytesReadMonthly Semua Byte bulanan yang dibaca dari tabel
content.slotMsConsumedMonthly Semua Slot bulanan dalam milidetik yang terpakai oleh workload yang berjalan di tabel
content.queryJobsCountMonthly Semua Jumlah tugas bulanan yang berjalan di tabel

Menerapkan rekomendasi cluster

Untuk menerapkan rekomendasi cluster, lakukan salah satu hal berikut:

Menerapkan cluster langsung ke tabel asli

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.

  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

Menerapkan 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.

  1. Di Konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. 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
  3. Di Konsol Google Cloud, buka Cloud Shell Editor.

    Aktifkan Cloud Shell

  4. 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 atau tables.patch untuk mengubah spesifikasi cluster.

  5. 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 pernyataan CREATE 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)
  6. 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:

      1. 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.

      2. Serap data dari tabel asli ke tabel yang disalin:

        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.

  7. 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.

  8. Ganti nama tabel yang disalin menjadi tabel asli:

    ALTER TABLE DATASET.COPIED_TABLE
    RENAME TO DATASET.ORIGINAL_TABLE

    Tabel asli Anda sekarang dikelompokkan sesuai dengan rekomendasi cluster.

Sebaiknya Anda meninjau tabel yang dikelompokkan untuk memastikan bahwa semua fungsi tabel berfungsi sebagaimana mestinya. Banyak fungsi tabel kemungkinan terkait dengan ID tabel, bukan nama tabel, sehingga sebaiknya tinjau fungsi tabel berikut sebelum melanjutkan:

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 cluster dalam 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

Untuk menerapkan rekomendasi partisi, Anda harus menerapkannya ke salinan tabel asli. BigQuery tidak mendukung perubahan skema partisi tabel yang sudah ada, seperti mengubah tabel yang tidak dipartisi menjadi tabel yang dipartisi, mengubah skema partisi tabel, atau membuat tampilan terwujud dengan skema partisi yang berbeda dari tabel dasar. Anda hanya dapat mengubah partisi tabel pada salinan tabel.

Terapkan rekomendasi partisi ke tabel yang disalin

Saat menerapkan rekomendasi partisi ke tabel BigQuery, Anda harus 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.

  1. 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.

  2. 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.

  3. Ganti nama tabel yang disalin menjadi tabel asli:

    ALTER TABLE DATASET.COPIED_TABLE
    RENAME TO DATASET.ORIGINAL_TABLE

    Tabel asli Anda kini dipartisi menurut rekomendasi partisi.

Sebaiknya Anda meninjau tabel yang dipartisi untuk memastikan bahwa semua fungsi tabel berfungsi sebagaimana mestinya. Banyak fungsi tabel kemungkinan terkait dengan ID tabel, bukan nama tabel, sehingga sebaiknya tinjau fungsi tabel berikut sebelum melanjutkan:

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

Untuk mengetahui detail harga fitur ini, lihat ringkasan harga Gemini di BigQuery.

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.

Kuota dan batas

Untuk mengetahui informasi tentang kuota dan batas untuk fitur ini, lihat Kuota untuk Gemini di BigQuery.

Pemecahan masalah

Masalah: Tidak ada rekomendasi yang muncul untuk tabel tertentu.

Rekomendasi partisi dan cluster mungkin tidak muncul dalam situasi berikut:

  • Ukuran tabel kurang dari 10 GB.
  • Tabel ini memiliki biaya tulis yang tinggi dari operasi bahasa pengolahan data (DML).
  • Tabel tidak dibaca dalam 30 hari terakhir.
  • Estimasi penghematan bulanan terlalu tidak signifikan (penghematan kurang dari 1 slot jam).
  • Tabel sudah dikelompokkan.