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

  1. Pastikan Recommender API diaktifkan.
  2. 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.

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

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

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

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

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.