Todos os produtos
Search
Central de documentação

Tablestore:Filters

Última atualização: Jul 03, 2026

Filtre resultados de consultas no servidor ao aplicar SingleColumnValueFilter ou CompositeColumnValueFilter no Tablestore PHP SDK.

Pré-requisitos

Antes de começar, verifique se você:

Como os filtros funcionam

O servidor executa os filtros após o Tablestore ler as linhas correspondentes ao intervalo de chave primária, mas antes de retornar os resultados à aplicação. Como a leitura ocorre primeiro, os filtros não reduzem o consumo de unidades de capacidade de leitura (CU). A cobrança abrange a leitura de todas as linhas no intervalo, independentemente de quantas linhas o filtro aprovar. Use filtros para reduzir a transferência de rede e o processamento na aplicação, não para diminuir custos de leitura.

Se um filtro não reduzir significativamente o conjunto de resultados, considere usar um intervalo de chave primária mais seletivo ou um índice secundário.

O Tablestore oferece dois tipos de filtro:

  • SingleColumnValueFilter: Avalia uma única coluna de atributo com base em uma condição.

  • CompositeColumnValueFilter: Combina até 32 condições de filtro com os operadores lógicos AND, OR ou NOT.

SingleColumnValueFilter

Use SingleColumnValueFilter para filtrar linhas com base no valor de uma coluna de atributo.

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

Parameters

Nome

Tipo

Descrição

Padrão

column_name (obrigatório)

string

Nome da coluna de atributo a avaliar.

value (obrigatório)

STRING, INTEGER, BINARY, DOUBLE ou BOOLEAN

Valor de referência para comparação.

comparator (obrigatório)

ComparatorTypeConst

Operador relacional. Valores válidos: CONST_EQUAL (=), CONST_NOT_EQUAL (!=), CONST_GREATER_THAN (>), CONST_GREATER_EQUAL (>=), CONST_LESS_THAN (<) e CONST_LESS_EQUAL (<=).

pass_if_missing (opcional)

bool

Define se o sistema deve retornar uma linha quando a coluna de atributo especificada não existir nela. Defina como false para excluir linhas sem a coluna.

true

latest_version_only (opcional)

bool

Define se o sistema deve avaliar apenas a versão mais recente da coluna de atributo. Defina como false para retornar a linha se qualquer versão atender à condição.

true

Exemplo

O exemplo a seguir lê linhas com chaves primárias no intervalo [row1, row3) por meio de getRange e aplica um filtro para retornar apenas as linhas em que col1 seja igual a val1.

$request = array (
    'table_name' => 'test_table',
    // Set the start primary key for the range query.
    'inclusive_start_primary_key' => array (
        array('id', 'row1')
    ),
    // Set the end primary key for the range query. The result does not include this key.
    'exclusive_end_primary_key'  => array (
        array('id', 'row3')
    ),
    // Read data in forward order.
    'direction' => DirectionConst::CONST_FORWARD,
    // Read the latest version of data.
    'max_versions' => 1,
    // Return only rows where col1 equals "val1".
    'column_filter' => array (
        'column_name' => 'col1',
        'value' => 'val1',
        'comparator' => ComparatorTypeConst::CONST_EQUAL
    )
);

try {
    // Call getRange to read rows.
    $response = $client->getRange ($request);

    // Process the response.
    echo "* Read CU Cost: " . $response['consumed']['capacity_unit']['read'] . "\n";
    echo "* Write CU Cost: " . $response['consumed']['capacity_unit']['write'] . "\n";
    echo "* Row Data: " . "\n";
    foreach ($response['rows'] as $row) {
        echo json_encode($row) . "\n";
    }
} catch (Exception $e){
    echo "Get Range failed.";
}
  • Para excluir linhas sem a coluna de atributo especificada, defina pass_if_missing como false:

    $request['column_filter']['pass_if_missing'] = false;
  • Para retornar uma linha se qualquer versão da coluna de atributo atender à condição (não apenas a mais recente), defina latest_version_only como false:

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

CompositeColumnValueFilter

Use CompositeColumnValueFilter para combinar até 32 condições de filtro com operadores lógicos.

[
    'logical_operator' => <LogicalOperator>
    'sub_filters' => [
        <ColumnFilter>,
        <ColumnFilter>,
        <ColumnFilter>,
         // other conditions
        ]
    ]

Parameters

Nome

Tipo

Descrição

logical_operator (obrigatório)

LogicalOperatorConst

Operador lógico. Valores válidos: CONST_NOT (NOT), CONST_AND (AND) e CONST_OR (OR).

sub_filters (obrigatório)

array

Filtros a combinar. Cada elemento pode ser um SingleColumnValueFilter ou outro CompositeColumnValueFilter.

Exemplo

Este exemplo lê linhas com chaves primárias no intervalo [row1, row3) e aplica um filtro composto com a condição (col1 = val1 OR col2 = val2) AND (col3 = val3).

$request = array (
    'table_name' => 'test_table',
    // Set the start primary key for the range query.
    'inclusive_start_primary_key' => array (
        array('id', 'row1')
    ),
    // Set the end primary key for the range query. The result does not include this key.
    'exclusive_end_primary_key'  => array (
        array('id', 'row3')
    ),
    // Read data in forward order.
    'direction' => DirectionConst::CONST_FORWARD,
    // Read the latest version of data.
    'max_versions' => 1
);

// Combine conditions: (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 {
    // Call getRange to read rows.
    $response = $client->getRange ($request);

    // Process the response.
    echo "* Read CU Cost: " . $response['consumed']['capacity_unit']['read'] . "\n";
    echo "* Write CU Cost: " . $response['consumed']['capacity_unit']['write'] . "\n";
    echo "* Row Data: " . "\n";
    foreach ($response['rows'] as $row) {
        echo json_encode($row) . "\n";
    }
} catch (Exception $e){
    echo "Get Range failed.";
}

Referências