Gunakan Tablestore SDK for Go untuk memfilter baris atau membatasi kolom atribut yang dikembalikan di sisi server saat membaca data model Kolom Lebar.
Prasyarat
Instal Tablestore SDK for Go dan inisialisasi klien.
Deskripsi
Filter menyaring hasil pembacaan di sisi server namun tidak mengurangi CU baca yang dikonsumsi. Anda dapat menentukan filter dalam kriteria kueri GetRow, GetRange, atau BatchGetRow. Tablestore SDK for Go mendukung jenis filter berikut:
-
Filter nilai kolom tunggal (
SingleColumnCondition): mengevaluasi nilai kolom atribut. -
Filter regex nilai kolom tunggal (
SingleColumnValueRegexFilter): mengekstraksi substring dari kolom atribut bertipe STRING, mengonversi substring tersebut, lalu membandingkan hasilnya. -
Filter komposit (
CompositeColumnCondition): menggabungkan beberapa filter menggunakan AND, OR, atau NOT. Filter komposit dapat berisi hingga 32 kondisi. -
Filter paginasi kolom (
PaginationFilter): mengembalikan kolom atribut berdasarkan offset dan jumlah tanpa mengevaluasi nilai kolom.
Contoh berikut menggunakan filter nilai kolom tunggal untuk hanya mengembalikan baris dengan score >= 60.
filter := tablestore.NewSingleColumnCondition(
"score",
tablestore.CT_GREATER_EQUAL,
int64(60),
)
request.RangeRowQueryCriteria.Filter = filter
response, err := client.GetRange(request)
if err != nil {
log.Fatal(err)
}
fmt.Println(response.Rows)
Parameter
Filter nilai kolom tunggal
Panggil NewSingleColumnCondition(columnName, comparator, value) untuk membuat filter nilai kolom tunggal. SingleColumnCondition memiliki parameter berikut.
|
Nama |
Tipe |
Deskripsi |
|
ColumnName (wajib) |
|
Kolom atribut yang akan dievaluasi. |
|
Comparator (wajib) |
|
Operator perbandingan. Nilai yang valid: |
|
ColumnValue (wajib) |
|
Nilai yang digunakan untuk perbandingan. |
|
FilterIfMissing (opsional) |
|
Menentukan apakah baris harus difilter jika kolom tidak tersedia. Nilai default: |
|
LatestVersionOnly (opsional) |
|
Menentukan apakah hanya versi terbaru yang dievaluasi. Nilai default: |
Filter regex nilai kolom tunggal
Panggil NewSingleColumnValueRegexFilter(columnName, comparator, rule, value) untuk membuat filter regex. Hanya kolom atribut bertipe STRING yang mendukung filter regex.
Selain parameter filter nilai kolom tunggal, tentukan ValueTransferRule dengan parameter berikut.
|
Nama |
Tipe |
Deskripsi |
|
Regex (wajib) |
|
Ekspresi reguler yang digunakan untuk mengekstraksi substring. Panjang maksimum: 256 byte.
|
|
Cast_type (wajib) |
|
Tipe tujuan konversi substring yang diekstraksi. Nilai yang valid: |
Filter komposit
Panggil NewCompositeColumnCondition(lo) untuk membuat filter komposit, lalu panggil AddFilter untuk menambahkan subfilter.
|
Nama |
Tipe |
Deskripsi |
|
Operator (wajib) |
|
Operator logika. Nilai yang valid: |
|
Filters (wajib) |
|
Subfilter yang akan digabungkan. Jenis berikut didukung:
|
Filter paginasi kolom
PaginationFilter memiliki parameter berikut.
|
Nama |
Type |
Deskripsi |
|
Limit (wajib) |
|
Jumlah kolom atribut yang dikembalikan. Nilainya harus lebih besar dari 0. |
|
Offset (opsional) |
|
Jumlah kolom atribut yang dilewati. Nilainya harus lebih besar dari atau sama dengan 0. Nilai default: |
Contoh
Filter regex
Contoh berikut mengekstraksi active dari nilai kolom profile dalam format level:active, lalu membandingkan hasilnya dengan nilai tertentu.
rule := tablestore.NewValueTransferRule(
`level:([a-z]+)`,
tablestore.Variant_STRING,
)
filter := tablestore.NewSingleColumnValueRegexFilter(
"profile",
tablestore.CT_EQUAL,
rule,
"active",
)
request.SingleRowQueryCriteria.Filter = filter
Filter komposit
Contoh berikut mengembalikan baris dengan score >= 60 dan status bernilai active.
filter := tablestore.NewCompositeColumnCondition(tablestore.LO_AND)
filter.AddFilter(
tablestore.NewSingleColumnCondition("score", tablestore.CT_GREATER_EQUAL, int64(60)),
)
filter.AddFilter(
tablestore.NewSingleColumnCondition("status", tablestore.CT_EQUAL, "active"),
)
request.RangeRowQueryCriteria.Filter = filter
Paginasi kolom atribut yang dikembalikan
Contoh berikut melewati kolom atribut pertama dan mengembalikan dua kolom atribut berikutnya.
request.SingleRowQueryCriteria.Filter = &tablestore.PaginationFilter{
Offset: 1,
Limit: 2,
}