Pengantar tabel yang dikelompokkan (original) (raw)

Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

Tabel yang dikelompokkan di BigQuery adalah tabel yang memiliki tata urutan kolom buatan pengguna menggunakan kolom yang dikelompokkan. Tabel yang dikelompokkan dapat meningkatkan performa kueri dan mengurangi biaya kueri.

Di BigQuery, kolom yang dikelompokkan adalah properti tabel buatan pengguna yang mengurutkan blok penyimpananberdasarkan nilai dalam kolom yang dikelompokkan. Blok penyimpanan disesuaikan ukurannya berdasarkan ukuran tabel. Kolokasi terjadi di tingkat blok penyimpanan, bukan di tingkat setiap baris; untuk informasi selengkapnya tentang kolokasi dalam konteks ini, lihat Clustering.

Tabel yang dikelompokkan mempertahankan properti pengurutan dalam konteks setiap operasi yang memodifikasinya. Kueri yang memfilter atau menggabungkan kolom yang dikelompokkan hanya memindai blok yang relevan berdasarkan kolom yang dikelompokkan, bukan seluruh tabel atau partisi tabel. Akibatnya, BigQuery mungkin tidak dapat secara akurat memperkirakan byte yang akan diproses oleh kueri atau biaya kueri, tetapi berupaya mengurangi total byte saat eksekusi.

Jika Anda mengelompokkan tabel menggunakan beberapa kolom, urutan kolom akan menentukan kolom mana yang lebih diutamakan saat BigQuery mengurutkan dan mengelompokkan data ke dalam blok penyimpanan, seperti yang terlihat dalam contoh berikut. Tabel 1 menunjukkan tata letak blok penyimpanan logis dari tabel yang tidak dikelompokkan. Sebagai perbandingan, tabel 2 hanya dikelompokkan berdasarkan kolom Country, sedangkan tabel 3 dikelompokkan berdasarkan beberapa kolom, Country dan Status.

BigQuery mengurutkan data dalam tabel yang dikelompokkan untuk meningkatkan performa kueri.

Saat membuat kueri tabel yang dikelompokkan, Anda tidak akan menerima perkiraan biaya kueri yang akurat sebelum eksekusi kueri karena jumlah blok penyimpanan yang akan dipindai tidak diketahui sebelum eksekusi kueri. Biaya akhir ditentukan setelah eksekusi kueri selesai dan didasarkan pada blok penyimpanan tertentu yang dipindai.

Kapan harus menggunakan pengelompokan

Pengelompokan menangani cara penyimpanan tabel, sehingga secara umum ini merupakan opsi pertama yang baik untuk meningkatkan performa kueri. Oleh karena itu, Anda harus selalu mempertimbangkan untuk mengelompokkan dengan mempertimbangkan keuntungan yang diberikannya berikut ini:

Sebaiknya Anda mempertimbangkan untuk mempartisi tabel selain pengelompokan. Dalam pendekatan ini, pertama-tama Anda akan menyegmentasi data menjadi beberapa partisi, lalu mengelompokkan data dalam setiap partisi berdasarkan kolom pengelompokan. Pertimbangkan pendekatan ini dalam keadaan berikut:

Untuk informasi selengkapnya, lihatMenggabungkan tabel berpartisi dan yang dikelompokkan.

Pengurutan dan jenis kolom cluster

Bagian ini menjelaskan jenis kolom dan cara kerja urutan kolom dalam pengelompokan tabel.

Jenis kolom cluster

Kolom cluster harus berupa kolom level atas dan tidak berulang yang merupakan salah satu dari jenis berikut:

Untuk mengetahui informasi selengkapnya tentang jenis data, lihatJenis data GoogleSQL.

Pengurutan kolom cluster

Urutan kolom yang dikelompokkan akan memengaruhi performa kueri. Pada contoh berikut, tabel Orders dikelompokkan menggunakan tata urutan kolom Order_Date, Country, dan Status. Kolom cluster pertama dalam contoh ini adalah Order_Date, sehingga kueri yang memfilter pada Order_Date danCountry dioptimalkan untuk pengelompokan, sedangkan kueri yang memfilter hanya padaCountry dan Status tidak dioptimalkan.

Kueri pada tabel yang dikelompokkan harus menyertakan kolom yang dikelompokkan secara berurutan mulai dari yang pertama.

Pemangkasan blok

Tabel yang dikelompokkan dapat membantu Anda mengurangi biaya kueri dengan memangkas data agar tidak diproses oleh kueri. Proses ini disebut sebagai pemangkasan blok. BigQuery mengurutkan data dalam tabel yang dikelompokkan berdasarkan pada nilai kolom pengelompokan dan mengelolanya menjadi blok.

Saat Anda menjalankan kueri terhadap tabel yang dikelompokkan, dan kueri menyertakan filter pada kolom yang dikelompokkan, BigQuery akan menggunakan ekspresi filter dan metadata blok untuk memangkas blok yang dipindai oleh kueri. Hal ini memungkinkan BigQuery untuk hanya memindai blok yang relevan.

Ketika dipangkas, blok tidak akan dipindai. Hanya blok yang dipindai yang digunakan untuk menghitung byte data yang diproses oleh kueri. Jumlah byte yang diproses oleh kueri terhadap tabel yang dikelompokkan sama dengan jumlah byte yang dibaca di setiap kolom yang dirujuk oleh kueri pada blok yang dipindai.

Jika tabel yang dikelompokkan dirujuk beberapa kali dalam kueri yang menggunakan sejumlah filter, BigQuery akan mengenakan biaya atas pemindaian kolom di blok yang sesuai di masing-masing filter. Untuk contoh cara kerja pemangkasan blok, lihat Contoh.

Menggabungkan tabel berpartisi dan yang dikelompokkan

Anda dapat menggabungkan pengelompokan tabel dengan partisi tabeluntuk mendapatkan pengurutan yang lebih mendetail guna mengoptimalkan kueri lebih lanjut.

Dalam tabel berpartisi, data disimpan dalam blok fisik, yang masing-masing menyimpan satu partisi data. Setiap tabel berpartisi mempertahankan berbagai metadata tentang properti pengurutan di semua operasi yang mengubahnya. Dengan metadata, BigQuery akan dapat memperkirakan biaya kueri dengan lebih akurat sebelum kueri dijalankan. Namun, dengan membuat partisi akan mengharuskan BigQuery untuk mengelola lebih banyak metadata dibandingkan dengan tabel yang tidak berpartis. Seiring dengan bertambahnya jumlah partisi, jumlah metadata yang harus dipertahankan juga akan meningkat.

Saat membuat tabel yang dikelompokkan dan berpartisi, Anda dapat memperoleh pengurutan yang lebih detail, seperti yang ditunjukkan pada diagram berikut:

Membandingkan tabel yang tidak dikelompokkan atau berpartisi dengan tabel yang dikelompokkan dan berpartisi.

Contoh

Anda memiliki tabel yang dikelompokkan bernama ClusteredSalesData. Tabel berpartisi berdasarkan kolom timestamp, dan dikelompokkan menurut kolom customer_id. Data dikelola ke dalam rangkaian blok berikut:

ID partisi ID blok Nilai minimum untuk customer_id dalam blok Nilai maksimum untuk customer_id dalam blok
20160501 B1 10000 19999
20160501 B2 20000 24999
20160502 B3 15000 17999
20160501 B4 22000 27999

Anda menjalankan kueri berikut terhadap tabel. Kueri berisi filter pada kolom customer_id.

SELECT SUM(totalSale) FROM mydataset.ClusteredSalesData WHERE customer_id BETWEEN 20000 AND 23000 AND DATE(timestamp) = "2016-05-01"

Kueri sebelumnya melibatkan langkah-langkah berikut:

Pengelompokan ulang otomatis

Saat data ditambahkan ke tabel yang dikelompokkan, data baru akan disusun ke dalam blok, yang dapat membuat blok penyimpanan baru atau mengupdate blok yang ada. Pengoptimalan blok diperlukan untuk performa kueri dan penyimpanan yang optimal karena data baru mungkin tidak dikelompokkan dengan data yang ada dan memiliki nilai cluster yang sama.

Untuk mempertahankan karakteristik performa tabel yang dikelompokkan, BigQuery akan melakukan pengelompokan ulang otomatis di latar belakang. Untuk tabel berpartisi, pengelompokan dipertahankan untuk data dalam cakupan setiap partisi.

Batasan

Kuota dan batas tabel yang dikelompokkan

BigQuery membatasi penggunaan resource Google Cloud bersama dengankuota dan batas, termasuk batasan pada operasi tabel tertentu atau jumlah tugas yang dijalankan dalam satu hari.

Saat menggunakan fitur tabel yang dikelompokkan dengan tabel berpartisi, Anda akan tunduk padabatas tabel berpartisi.

Kuota dan batas juga berlaku untuk berbagai jenis tugas yang dapat Anda jalankan terhadap tabel yang dikelompokkan. Untuk mengetahui informasi tentang kuota tugas yang berlaku untuk tabel Anda, lihat Tugas di "Kuota dan Batas".

Harga tabel yang dikelompokkan

Saat membuat dan menggunakan tabel yang dikelompokkan di BigQuery, biaya yang ditagih kepada Anda ditentukan berdasarkan jumlah data yang disimpan dalam tabel dan di kueri yang Anda jalankan terhadap data tersebut. Untuk mengetahui informasi selengkapnya, lihatHarga penyimpanan danHarga Kueri.

Seperti operasi tabel BigQuery lainnya, operasi tabel yang dikelompokkan akan memanfaatkan operasi bebas BigQuery seperti pemuatan batch, penyalinan tabel, pengelompokan ulang otomatis, dan ekspor data. Operasi ini tunduk pada kuota dan batas BigQuery. Untuk mengetahui informasi tentang operasi gratis, lihatOperasi gratis.

Untuk contoh harga tabel yang dikelompokkan secara mendetail, lihatPerkirakan biaya penyimpanan dan kueri.

Keamanan tabel

Untuk mengontrol akses ke tabel di BigQuery, lihat Mengontrol akses ke resource dengan IAM.

Langkah berikutnya