Filter

Saat membaca data dari Bigtable , Anda dapat membaca baris atau rentang baris tertentu. Namun, Anda tidak selalu membutuhkan semua data di semua baris. Anda mungkin hanya memerlukan baris yang berisi nilai tertentu di row key-nya, atau sel dalam grup kolom tertentu.

Untuk membatasi hasil permintaan baca, sertakan filter dalam permintaan. Filter diterapkan pada data sebelum respons dikirim, sehingga mengurangi jumlah data yang ditampilkan. Akibatnya, menggunakan filter dapat berarti biaya jaringan yang lebih rendah dan throughput yang lebih cepat. Halaman ini memberikan ringkasan cara kerja filter BigQuery dan daftar filter yang tersedia.

Guna mengetahui detail dan contoh kode untuk setiap filter, lihat Contoh filter.

Cara kerja filter

Jika permintaan baca Anda menyertakan filter, Bigtable akan mengambil baris atau rentang baris dari tabel Anda. Untuk setiap baris input yang diambilnya, Bigtable mengevaluasi baris menggunakan filter Anda, lalu menghasilkan baris output berdasarkan hasil filter.

Bigtable menyediakan beberapa jenis filter, seperti yang dijelaskan di bagian berikut. Filter dasar terbagi dalam dua kategori: membatasi dan mengubah. Anda dapat menggabungkan filter dasar ke dalam filter menulis.

Umumnya, filter diterapkan ke semua baris kecuali jika Anda menentukan baris, rentang baris, atau jumlah baris tempat filter harus diterapkan. Salah satu pengecualiannya adalah filter ekspresi reguler kunci baris, yang dapat membatasi rentang baris dalam kasus tertentu jika ekspresi reguler adalah awalan tetap. Secara umum, untuk menghindari kelambatan pemindaian tabel penuh, selalu tentukan baris untuk filter.

Membatasi filter

Filter pembatas mengontrol baris atau sel yang akan disertakan dalam respons, berdasarkan apakah baris atau sel tersebut cocok dengan kriteria tertentu. Misalnya, Anda dapat mengatakan bahwa respons hanya boleh menyertakan baris yang memiliki row key yang cocok dengan ekspresi reguler, atau bahwa Anda hanya menginginkan sel dari grup kolom tertentu.

Banyak filter pembatas dapat mengecualikan sel dari baris output. Jika semua sel dikecualikan dari baris output, baris tersebut tidak akan disertakan dalam respons.

Lihat Ringkasan filter untuk mengetahui daftar lengkap filter pembatasan.

Memodifikasi filter

Filter modifikasi memengaruhi data atau metadata untuk setiap sel.

Bigtable menyediakan filter modifikasi berikut:

  • Filter nilai strip, yang mengganti nilai setiap sel dengan string kosong. Filter ini berguna saat Anda hanya memerlukan jumlah baris atau daftar kunci baris yang memenuhi kriteria Anda, bukan data dari baris tersebut.

  • Terapkan filter label, yang menerapkan label ke setiap sel untuk mengidentifikasi filter yang menghasilkan setiap sel dalam respons. Aplikasi Anda dapat menggunakan label ini untuk melakukan pemfilteran tambahan di sisi klien.

Menulis filter

Filter penulisan memungkinkan Anda menggabungkan beberapa filter dasar menjadi satu, sehingga dapat menerapkan lebih dari satu filter ke satu permintaan baca. Misalnya, untuk mendapatkan data penggunaan CPU bagi server, Anda dapat menggunakan satu filter untuk hanya menyertakan baris yang kunci barisnya diawali dengan SERVER, diikuti dengan filter kedua untuk hanya menyertakan sel dalam grup kolom CPU.

Bigtable menyediakan filter komposisi berikut:

  • Rantai, yang menerapkan urutan filter ke setiap baris input dan menampilkan baris output. Filter rantai seperti menggunakan logika AND.
  • interLeave, yang mengirim setiap baris input melalui beberapa filter, lalu menggabungkan semua hasil filter untuk baris input menjadi satu baris output. Filter sisipan seperti menggunakan logika OR.
  • Kondisi, yang menghasilkan baris output dengan menerapkan satu dari dua filter yang memungkinkan ke baris input. Filter dipilih dengan menerapkan filter predikat ke baris input, lalu memeriksa apakah baris output filter predikat berisi sel.

Filter dan performa

Filter memungkinkan Anda mengambil data yang benar-benar Anda perlukan. Akibatnya, filter dapat meningkatkan performa dengan mengurangi jumlah data yang dikirim ke aplikasi Anda.

Namun, filter bukanlah solusi serba guna untuk setiap masalah performa. Secara umum, filter harus digunakan untuk mengontrol efisiensi throughput, bukan untuk mengurangi latensi antara mengirim permintaan dan menerima respons. Jika digunakan dengan benar, filter dapat menjadi bagian strategi yang efektif untuk meningkatkan performa baca.

Filter conditions, secara khusus, dapat meningkatkan latensi, karena kondisi jauh lebih lambat daripada filter lainnya. Jika permintaan baca Anda sangat sensitif terhadap performa, jangan gunakan kondisi dalam permintaan tersebut.

Ringkasan filter

Tabel berikut ini mencantumkan filter yang disediakan Bigtable, termasuk link ke detail dan contoh kode untuk setiap filter.

Membatasi filter
Blokir semua Jangan memunculkan sel apa pun. Sebagian besar berguna untuk proses debug.
Batas sel per kolom Hanya sertakan N versi terbaru dari sebuah kolom dalam satu baris.
Batas sel per baris Hanya sertakan N sel pertama dari sebuah baris.
Offset sel per baris Hapus N sel pertama dari baris.
Ekspresi reguler jenis kolom Hanya sertakan sel yang grup kolomnya cocok dengan ekspresi reguler RE2.
Ekspresi reguler penentu kolom Hanya sertakan sel yang penentu kolomnya cocok dengan ekspresi reguler.
Rentang kolom Hanya sertakan sel dalam grup kolom tertentu yang penentu kolomnya berada dalam rentang tertentu.
Lulus semua Menghapus semua sel input. Sebagian besar berguna untuk proses debug.
Ekspresi reguler kunci baris Hanya sertakan sel yang baris key-nya cocok dengan ekspresi reguler.
Contoh baris Ambil sampel baris acak.
Wastafel Sertakan sel di baris output akhir, dan cegah sel tersebut diubah atau dihapus oleh filter berikutnya.
Rentang stempel waktu Hanya sertakan sel yang stempel waktunya berada dalam rentang tertentu.
Rentang nilai Hanya sertakan sel yang nilainya berada dalam rentang tertentu.
Ekspresi reguler nilai Hanya sertakan sel yang nilainya cocok dengan ekspresi reguler.
Memodifikasi filter
Terapkan label Menambahkan label ke semua sel.
Nilai strip Menampilkan string kosong untuk setiap nilai sel.
Menulis filter
Jaringan bisnis Terapkan beberapa filter secara berurutan.
Kondisi Terapkan salah satu dari dua kemungkinan filter ke baris.
Selipkan Menggabungkan baris output dari beberapa filter ke dalam satu baris output.

Langkah selanjutnya