Todos os produtos
Search
Central de documentação

Tablestore:Filter

Última atualização: Jul 03, 2026

O Tablestore oferece filtragem de dados no servidor com base em condições específicas durante consultas. Use filtros no SDK do Python para retornar apenas as linhas correspondentes aos critérios definidos.

Pré-requisitos

Antes de começar, verifique se você:

Funcionamento dos filtros

O servidor avalia os filtros após o Tablestore verificar as linhas correspondentes ao intervalo de chave primária definido. O sistema consome unidades de capacidade de leitura (RCU) para cada linha verificada, independentemente de ela atender ao filtro. Para reduzir o consumo desnecessário de RCU, defina um intervalo de chave primária preciso antes de aplicar qualquer filtro.

O Tablestore disponibiliza dois tipos de filtro:

  • SingleColumnCondition — filtra linhas com base no valor de uma única coluna de atributo. Use este filtro para comparar uma coluna específica com um valor fixo.

  • CompositeColumnCondition — combina várias condições usando operadores lógicos (AND, OR, NOT). Use este filtro quando a lógica envolver múltiplas colunas ou exigir expressões compostas. Aceita até 32 condições.

SingleColumnCondition

Filtra linhas conforme uma única coluna de atributo atenda a uma condição de comparação.

class SingleColumnCondition(ColumnCondition)

Parameters

Parâmetro

Tipo

Descrição

comparator

ComparatorType

Obrigatório. Operador relacional. Valores válidos: EQUAL, NOT_EQUAL, GREATER_THAN, GREATER_EQUAL, LESS_THAN, LESS_EQUAL.

column_name

str

Obrigatório. Nome da coluna de atributo a avaliar.

column_value

str, int, bytes, float, bool

Obrigatório. Valor usado na comparação.

pass_if_missing

bool

Define se o sistema deve retornar uma linha sem a coluna de atributo especificada. Valor padrão: True.

latest_version_only

bool

Define se o sistema deve avaliar apenas a versão mais recente da coluna de atributo. Valor padrão: True. Se definido como True, a verificação considera somente a última versão, mesmo que a coluna tenha outras versões.

Exemplo de código

O exemplo abaixo executa uma consulta por intervalo para linhas com chave primária entre [row1, row3) e retorna apenas aquelas em que a coluna de atributo col1 seja igual a val1.

try:
    # Set the start primary key for the query.
    inclusive_start_primary_key = [('id', 'row1')]
    # Set the end primary key for the query. The end key is exclusive.
    exclusive_end_primary_key = [('id', 'row3')]

    # Create a filter with the condition col1 == "val1".
    singleColumnCondition = SingleColumnCondition('col1', 'val1', ComparatorType.EQUAL)

    # Call the get_range method to query data.
    consumed, next_start_primary_key, row_list, next_token = client.get_range('test_table', Direction.FORWARD,
                                                                              inclusive_start_primary_key,
                                                                              exclusive_end_primary_key,
                                                                              column_filter=singleColumnCondition)

    # Process the results.
    print('* Read CU Cost: %s' % consumed.read)
    print('* Write CU Cost: %s' % consumed.write)
    print('* Rows Data:')
    for row in row_list:
        print(row.primary_key, row.attribute_columns)
except Exception as e:
    print("Range get failed with error: %s" % e)
  • Para excluir linhas sem a coluna de atributo especificada:

    singleColumnCondition.pass_if_missing = False
  • Para avaliar todas as versões dos dados e retornar a linha caso qualquer versão atenda à condição:

    singleColumnCondition.latest_version_only = False

CompositeColumnCondition

Combina múltiplas condições de filtro por meio de operadores lógicos. Aceita até 32 condições e permite aninhar objetos CompositeColumnCondition para criar expressões complexas.

class CompositeColumnCondition(ColumnCondition)

Parameters

Parâmetro

Tipo

Descrição

combinator

LogicalOperator

Obrigatório. Operador lógico. Valores válidos: NOT, AND, OR.

sub_conditions

List[ColumnCondition]

Obrigatório. Lista de condições a combinar. Cada item pode ser um SingleColumnCondition ou um CompositeColumnCondition.

Exemplo de código

O exemplo a seguir executa uma consulta por intervalo para linhas com chave primária no intervalo [row1, row3) e aplica um filtro composto:

(col1 == "val1" OR col2 == "val2") AND col3 == "val3"

try:
    # Set the start primary key for the query.
    inclusive_start_primary_key = [('id', 'row1')]

    # Set the end primary key for the query. The end key is exclusive.
    exclusive_end_primary_key = [('id', 'row3')]

    # Create the first single-column condition: col1 == "val1".
    singleColumnCondition1 = SingleColumnCondition('col1', 'val1', ComparatorType.EQUAL)
    # Create the second single-column condition: col2 == "val2".
    singleColumnCondition2 = SingleColumnCondition('col2', 'val2', ComparatorType.EQUAL)
    # Create the first composite condition: col1 == "val1" OR col2 == "val2".
    compositeColumnCondition1 = CompositeColumnCondition(LogicalOperator.OR)
    compositeColumnCondition1.add_sub_condition(singleColumnCondition1)
    compositeColumnCondition1.add_sub_condition(singleColumnCondition2)
    # Create the third single-column condition: col3 == "val3".
    singleColumnCondition3 = SingleColumnCondition('col3', 'val3', ComparatorType.EQUAL)
    # Create the final composite condition: (col1 == "val1" OR col2 == "val2") AND col3 == "val3".
    compositeColumnCondition2 = CompositeColumnCondition(LogicalOperator.AND)
    compositeColumnCondition2.add_sub_condition(compositeColumnCondition1)
    compositeColumnCondition2.add_sub_condition(singleColumnCondition3)

    # Call the get_range method to query data.
    consumed, next_start_primary_key, row_list, next_token = client.get_range('test_table', Direction.FORWARD,
                                                                              inclusive_start_primary_key,
                                                                              exclusive_end_primary_key,
                                                                              column_filter=compositeColumnCondition2)

    # Process the results.
    print('* Read CU Cost: %s' % consumed.read)
    print('* Write CU Cost: %s' % consumed.write)
    print('* Rows Data:')
    for row in row_list:
        print(row.primary_key, row.attribute_columns)
except Exception as e:
    print("Range get failed with error: %s" % e)

Próximos passos