Filter Tablestore menyaring hasil kueri di server sebelum mengembalikan hasil yang telah disaring. Hanya baris yang memenuhi kondisi filter yang dikembalikan.
Prasyarat
Sebuah instance OTSClient telah diinisialisasi. Untuk informasi lebih lanjut, lihat Inisialisasi instance OTSClient.
Tabel data telah dibuat dan data telah ditulis ke tabel tersebut. Untuk informasi lebih lanjut, lihat Buat tabel data dan Tulis data.
Pengenalan
Saat Anda memanggil operasi GetRow, BatchGetRow, atau GetRange untuk menanyakan data, Anda dapat menggunakan filter untuk hanya mengembalikan baris yang memenuhi kondisi filter.
Filter mencakup SingleColumnValueFilter dan CompositeColumnValueFilter.
SingleColumnValueFilter: menentukan apakah akan mengembalikan baris berdasarkan nilai kolom referensi.
CompositeColumnValueFilter: menentukan apakah akan mengembalikan baris berdasarkan kombinasi kondisi filter dari beberapa kolom referensi.
Untuk informasi lebih lanjut tentang filter, lihat Konfigurasi sebuah filter.
Catatan penggunaan
Kondisi filter mendukung operator relasional =, !=, >, >=, <, dan <= serta operator logika NOT, AND, dan OR. Kondisi filter dapat mencakup hingga 10 subkondisi.
Kolom referensi yang digunakan oleh filter harus termasuk dalam hasil kueri. Jika kolom tertentu yang dibaca tidak mencakup kolom referensi, filter tidak dapat menanyakan nilai kolom referensi tersebut.
Saat menggunakan operasi GetRange, hingga 5.000 baris atau 4 MB data dapat dipindai sekaligus.
Jika tidak ada data yang sesuai dengan kondisi filter dalam rentang pemindaian, baris yang dikembalikan akan kosong. Namun, NextStartPrimaryKey mungkin tidak kosong. Jika NextStartPrimaryKey tidak kosong, gunakan nilai parameter tersebut untuk melanjutkan pemindaian sampai nilai pengembalian NextStartPrimaryKey kosong.
Parameter
Parameter | Deskripsi |
columnName | Nama kolom referensi yang digunakan oleh filter. |
columnValue | Nilai kolom referensi yang digunakan oleh filter. |
ComparatorType | Operator relasional yang digunakan oleh filter. Untuk informasi lebih lanjut tentang operator relasional, lihat ComparatorType. Operator relasional berikut didukung: EQUAL (=), NOT_EQUAL (!=), GREATER_THAN (>), GREATER_EQUAL (>=), LESS_THAN (<), dan LESS_EQUAL (<=). |
LogicOperator | Operator logika yang digunakan oleh filter. Untuk informasi tentang operator logika, lihat LogicalOperator. Operator logika berikut didukung: NOT, AND, dan OR. |
passIfMissing | Menentukan apakah akan mengembalikan baris jika kolom referensi tidak ada di baris tersebut. Tipe data dari nilai parameter adalah Boolean. Nilai valid:
|
latestVersionOnly | Menentukan apakah hanya menggunakan versi terbaru data dalam kolom referensi untuk perbandingan ketika kolom referensi berisi beberapa versi data. Tipe: Boolean. Nilai valid:
|
Contoh
Gunakan SingleColumnValueFilter untuk menyaring data
Berikut ini adalah contoh kode yang menunjukkan cara mengembalikan baris data yang datanya adalah Tablestore di kolom col1 dalam tabel data.
function getRowWithCondition() {
// Tentukan bahwa baris dikembalikan ketika nilai kolom col1 adalah Tablestore. Saat passIfMissing diatur ke true, baris dikembalikan jika kolom ini tidak ada. Saat passIfMissing diatur ke false, baris tidak dikembalikan jika kolom ini tidak ada.
var condition = new TableStore.SingleColumnCondition('col1', 'Tablestore', TableStore.ComparatorType.EQUAL,true);
params.columnFilter = condition;
client.getRow(params, function (err, data) {
if (err) {
console.log('error:', err);
return;
}
console.log('success:', data);
});
}Gunakan CompositeColumnValueFilter untuk menyaring data
Berikut ini adalah contoh kode yang menunjukkan cara mengembalikan baris data yang datanya adalah Tablestore di kolom col1 dan 123456789 di kolom col5 dalam tabel data.
function getRowWithCompositeCondition() {
// Tentukan bahwa baris dikembalikan ketika nilai kolom col1 adalah Tablestore dan nilai kolom col5 adalah 123456789.
var condition = new TableStore.CompositeCondition(TableStore.LogicalOperator.AND);
condition.addSubCondition(new TableStore.SingleColumnCondition('col1', 'Tablestore', TableStore.ComparatorType.EQUAL));
condition.addSubCondition(new TableStore.SingleColumnCondition('col5', Long.fromNumber(123456789), TableStore.ComparatorType.EQUAL));
params.columnFilter = condition;
client.getRow(params, function (err, data) {
if (err) {
console.log('error:', err);
return;
}
console.log('success:', data);
});
}Referensi
Jika aplikasi perlu menggunakan kolom atribut yang berbeda sebagai kondisi kueri untuk menanyakan data, Anda dapat menentukan kolom atribut tersebut sebagai kolom kunci utama indeks sekunder. Dengan cara ini, Anda dapat menggunakan indeks sekunder untuk menanyakan data berdasarkan kolom atribut, mempercepat kueri data. Untuk informasi lebih lanjut, lihat Indeks Sekunder.
Jika bisnis Anda memerlukan kueri multi-dimensi dan analisis data, Anda dapat membuat indeks pencarian dan menentukan kolom atribut yang diperlukan sebagai bidang indeks pencarian. Kemudian, Anda dapat menanyakan dan menganalisis data menggunakan indeks pencarian. Misalnya, Anda dapat menggunakan indeks pencarian untuk melakukan kueri berdasarkan kolom non-kunci utama, kueri Boolean, dan kueri fuzzy. Anda juga dapat menggunakan indeks pencarian untuk mendapatkan nilai maksimum dan minimum, mengumpulkan statistik jumlah baris, dan mengelompokkan hasil kueri. Untuk informasi lebih lanjut, lihat Indeks Pencarian.
Anda dapat menggunakan fitur kueri SQL untuk menanyakan dan menganalisis data dalam tabel. Untuk informasi lebih lanjut, lihat Kueri Data.