All Products
Search
Document Center

Tablestore:Filter

Last Updated:Mar 12, 2026

Saring hasil kueri di sisi server dengan menerapkan SingleColumnValueFilter atau CompositeColumnValueFilter dalam Tablestore PHP SDK.

Prasyarat

Inisialisasi client Tablestore

Jenis Filter

Tablestore menyediakan jenis filter berikut:

  • SingleColumnValueFilter: Mengevaluasi nilai satu kolom atribut terhadap suatu kondisi.

  • CompositeColumnValueFilter: Menggabungkan beberapa kondisi filter menggunakan operator logika. Anda dapat menggabungkan hingga 32 kondisi filter.

SingleColumnValueFilter

[
    'column_name' => '<string>',
    'value' => <ColumnValue>,
    'comparator' => <ComparatorType>,
    'pass_if_missing' => true || false,
    'latest_version_only' => true || false
]

Parameter

Nama

Tipe

Deskripsi

comparator (wajib)

ComparatorTypeConst

Operator relasional. Nilai yang valid: CONST_EQUAL (=), CONST_NOT_EQUAL (!=), CONST_GREATER_THAN (>), CONST_GREATER_EQUAL (>=), CONST_LESS_THAN (<), dan CONST_LESS_EQUAL (<=).

column_name (wajib)

string

Nama kolom atribut yang akan dievaluasi.

value (wajib)

STRING, INTEGER, BINARY, DOUBLE, atau BOOLEAN

Nilai referensi untuk perbandingan.

pass_if_missing (opsional)

bool

Apakah baris dikembalikan ketika kolom atribut yang ditentukan tidak ada. Default: true (mengembalikan baris).

latest_version_only (opsional)

bool

Apakah hanya membandingkan versi terbaru dari kolom atribut. Default: true (hanya membandingkan versi terbaru). Jika diatur ke false, baris dikembalikan jika versi apa pun memenuhi kondisi.

Contoh

Contoh berikut membaca baris dengan kunci primer dalam rentang [row1, row3) menggunakan kueri rentang, lalu menerapkan filter untuk hanya mengembalikan baris di mana col1 sama dengan val1.

$request = array (
    'table_name' => 'test_table',
    // Tetapkan kunci primary awal untuk kueri rentang.
    'inclusive_start_primary_key' => array (
        array('id', 'row1')
    ),
    // Tetapkan kunci primary akhir untuk kueri rentang. Hasil tidak mencakup kunci ini.
    'exclusive_end_primary_key'  => array (
        array('id', 'row3')
    ),
    // Baca data dalam urutan maju.
    'direction' => DirectionConst::CONST_FORWARD,
    // Baca versi terbaru dari data.
    'max_versions' => 1,
    // Buat filter untuk mengembalikan baris di mana col1 sama dengan "val1".
    'column_filter' => array (
        'column_name' => 'col1',
        'value' => 'val1',
        'comparator' => ComparatorTypeConst::CONST_EQUAL
    )
);

try {
    // Panggil getRange untuk membaca baris.
    $response = $client->getRange ($request);

    // Proses respons.
    echo "* Biaya CU Baca: " . $response['consumed']['capacity_unit']['read'] . "\n";
    echo "* Biaya CU Tulis: " . $response['consumed']['capacity_unit']['write'] . "\n";
    echo "* Data Baris: " . "\n";
    foreach ($response['rows'] as $row) {
        echo json_encode($row) . "\n";
    }
} catch (Exception $e){
    echo "Get Range gagal.";
}
  • Untuk mengecualikan baris yang tidak berisi kolom atribut yang ditentukan, atur:

    $request['column_filter']['pass_if_missing'] = false;
  • Untuk mengevaluasi semua versi kolom atribut (mengembalikan baris jika versi apa pun memenuhi kondisi), atur:

    $request['column_filter']['latest_version_only'] = false;

CompositeColumnValueFilter

Gabungkan hingga 32 kondisi filter menggunakan operator logika.

[
    'logical_operator' => <LogicalOperator>
    'sub_filters' => [
        <ColumnFilter>,
        <ColumnFilter>,
        <ColumnFilter>,
         // kondisi lainnya
        ]
    ]

Parameter

Nama

Tipe

Deskripsi

logical_operator (wajib)

LogicalOperatorConst

Operator logika. Nilai yang valid: CONST_NOT (NOT), CONST_AND (AND), dan CONST_OR (OR).

sub_filters (wajib)

array

Filter yang digunakan dalam operasi logika. Filter ini dapat berupa SingleColumnValueFilter atau CompositeColumnValueFilter.

Contoh

Contoh berikut membaca baris dengan kunci primer dalam rentang [row1, row3) dan menerapkan CompositeColumnValueFilter dengan kondisi (col1 = val1 OR col2 = val2) AND (col3 = val3).

$request = array (
    'table_name' => 'test_table',
    // Tetapkan kunci primary awal untuk kueri rentang.
    'inclusive_start_primary_key' => array (
        array('id', 'row1')
    ),
    // Tetapkan kunci primary akhir untuk kueri rentang. Hasil tidak mencakup kunci ini.
    'exclusive_end_primary_key'  => array (
        array('id', 'row3')
    ),
    // Baca data dalam urutan maju.
    'direction' => DirectionConst::CONST_FORWARD,
    // Baca versi terbaru dari data.
    'max_versions' => 1
);

// Gabungkan kondisi: (col1 = val1 OR col2 = val2) AND (col3 = val3)
$request['column_filter'] = array(
    'logical_operator' => LogicalOperatorConst::CONST_AND,
    'sub_filters' => array(
        array(
            'logical_operator' => LogicalOperatorConst::CONST_OR,
            'sub_filters' => array(
                array(
                    'comparator' => ComparatorTypeConst::CONST_EQUAL,
                    'column_name' => 'col1',
                    'value' => 'val1'
                ),
                array(
                    'comparator' => ComparatorTypeConst::CONST_EQUAL,
                    'column_name' => 'col2',
                    'value' => 'val2'
                )
            )
        ),
        array(
            'comparator' => ComparatorTypeConst::CONST_EQUAL,
            'column_name' => 'col3',
            'value' => 'val3'
        )
    )
);

try {
    // Panggil getRange untuk membaca baris.
    $response = $client->getRange ($request);

    // Proses respons.
    echo "* Biaya CU Baca: " . $response['consumed']['capacity_unit']['read'] . "\n";
    echo "* Biaya CU Tulis: " . $response['consumed']['capacity_unit']['write'] . "\n";
    echo "* Data Baris: " . "\n";
    foreach ($response['rows'] as $row) {
        echo json_encode($row) . "\n";
    }
} catch (Exception $e){
    echo "Get Range gagal.";
}

Referensi