Tous les produits
Search
Centre de documentation

Tablestore:Use filters

Dernière mise à jour :Aug 18, 2026

Utilisez le SDK Tablestore pour Python afin de filtrer les lignes selon les valeurs des colonnes d'attribut côté serveur et de réduire la quantité de données renvoyées au client.

Prérequis

Installez le SDK Tablestore pour Python et initialisez un client.

Description de la fonctionnalité

Le serveur applique les filtres après avoir lu les données. Il ne renvoie au client que les lignes satisfaisant aux conditions. Le filtrage ne réduit ni le nombre de lignes lues par le serveur, ni les unités de capacité de lecture (CU) consommées. Utilisez les filtres après avoir restreint la plage de clés primaires.

Les conditions de filtre suivantes sont prises en charge :

  • SingleColumnCondition compare la valeur d'une seule colonne d'attribut.

  • SingleColumnRegexCondition extrait une sous-chaîne d'une colonne d'attribut de type chaîne et compare la valeur extraite.

  • CompositeColumnCondition combine jusqu'à 32 conditions à l'aide des opérateurs AND, OR ou NOT.

L'exemple suivant renvoie uniquement les lignes dont la dernière valeur de la colonne d'attribut status est online lors d'une lecture par plage.

column_filter = SingleColumnCondition(
    "status",
    "online",
    ComparatorType.EQUAL,
    pass_if_missing=False,
)
start_primary_key = [("partition", "device"), ("id", INF_MIN)]
end_primary_key = [("partition", "device"), ("id", INF_MAX)]

consumed, next_start_primary_key, rows, next_token = client.get_range(
    "example_table",
    Direction.FORWARD,
    start_primary_key,
    end_primary_key,
    column_filter=column_filter,
)

Paramètres

Condition de valeur sur une seule colonne

Appelez SingleColumnCondition(column_name, column_value, comparator, pass_if_missing=True, latest_version_only=True) pour créer une condition de valeur sur une seule colonne.

Nom

Type

Description

column_name (obligatoire)

str

Nom de la colonne d'attribut à évaluer.

column_value (obligatoire)

str, int, bytes, float ou bool

Valeur cible. Son type doit correspondre au type de valeur de la colonne d'attribut.

comparator (obligatoire)

ComparatorType

Opérateur de comparaison. Les valeurs valides sont EQUAL, NOT_EQUAL, GREATER_THAN, GREATER_EQUAL, LESS_THAN et LESS_EQUAL.

pass_if_missing (facultatif)

bool

Indique si une ligne satisfait au filtre lorsque la colonne d'attribut cible est absente. Valeur par défaut : True. Si ce paramètre est défini sur False, les lignes ne contenant pas la colonne ne sont pas renvoyées.

latest_version_only (facultatif)

bool

Indique s'il faut évaluer uniquement la dernière version. Valeur par défaut : True. Si ce paramètre est défini sur False, une ligne satisfait au filtre si n'importe quelle version remplit la condition.

Condition d'expression régulière

Appelez SingleColumnRegexCondition(column_name, comparator, column_value=None, regex_rule=None, latest_version_only=True) pour créer une condition d'expression régulière. Seules les colonnes d'attribut de type chaîne prennent en charge le filtrage par expression régulière.

Nom

Type

Description

column_name (obligatoire)

str

Nom de la colonne d'attribut de type chaîne à évaluer.

comparator (obligatoire)

ComparatorType

Opérateur de comparaison. Les valeurs valides sont EQUAL, NOT_EQUAL, GREATER_THAN, GREATER_EQUAL, LESS_THAN, LESS_EQUAL, EXIST et NOT_EXIST.

column_value (facultatif)

str, int ou float

Valeur cible. Omettez ce paramètre si comparator est défini sur EXIST ou NOT_EXIST. Dans les autres cas, ce paramètre est obligatoire. Son type doit correspondre à regex_rule.cast_type.

regex_rule (facultatif)

RegexRule

Règle d'extraction de sous-chaîne et de conversion de type.

latest_version_only (facultatif)

bool

Indique s'il faut évaluer uniquement la dernière version. Valeur par défaut : True. Si ce paramètre est défini sur False, une ligne satisfait au filtre si n'importe quelle version remplit la condition.

Si la colonne d'attribut cible est absente, une ligne ne satisfait jamais au filtre d'expression régulière. Le paramètre pass_if_missing ne peut pas être configuré séparément pour cette condition.

Règle d'expression régulière

Le paramètre regex_rule est de type RegexRule et contient les paramètres suivants.

Nom

Type

Description

regex_input (obligatoire)

str

Expression régulière, limitée à 256 octets. Les expressions compatibles Perl et les caractères mono-octet sont pris en charge. Les caractères chinois ne sont pas pris en charge. Si l'expression contient des groupes de capture, le premier groupe est extrait. Sinon, la correspondance entière est extraite.

cast_type (obligatoire)

CastType

Type vers lequel la valeur extraite est convertie. Les valeurs valides sont VT_STRING, VT_INTEGER et VT_DOUBLE. Les lignes dont les valeurs extraites ne peuvent pas être converties ne satisfont pas au filtre.

Condition composite

Appelez CompositeColumnCondition(combinator) pour créer une condition composite, puis appelez add_sub_condition pour ajouter des conditions.

Nom

Type

Description

combinator (obligatoire)

LogicalOperator

Opérateur logique. Les valeurs valides sont AND, OR et NOT.

sub_conditions (obligatoire)

List[ColumnCondition]

Conditions à combiner. Les conditions de valeur sur une seule colonne, les conditions d'expression régulière et les conditions composites imbriquées sont prises en charge, avec un maximum de 32 conditions.

Exemples

Filtrer avec une expression régulière

L'exemple suivant extrait le nombre de valeurs telles que user_004 dans la colonne d'attribut account, convertit le nombre en entier et renvoie uniquement les lignes dont la valeur extraite est supérieure à 3.

regex_rule = RegexRule(r"user_(\d+)", CastType.VT_INTEGER)
column_filter = SingleColumnRegexCondition(
    "account",
    ComparatorType.GREATER_THAN,
    3,
    regex_rule,
)

consumed, next_start_primary_key, rows, next_token = client.get_range(
    "example_table",
    Direction.FORWARD,
    start_primary_key,
    end_primary_key,
    column_filter=column_filter,
)

Combiner des filtres

L'exemple suivant construit le filtre (category == "sensor" OR category == "gateway") AND score > 3.

category_filter = CompositeColumnCondition(LogicalOperator.OR)
category_filter.add_sub_condition(
    SingleColumnCondition("category", "sensor", ComparatorType.EQUAL)
)
category_filter.add_sub_condition(
    SingleColumnCondition("category", "gateway", ComparatorType.EQUAL)
)

column_filter = CompositeColumnCondition(LogicalOperator.AND)
column_filter.add_sub_condition(category_filter)
column_filter.add_sub_condition(
    SingleColumnCondition("score", 3, ComparatorType.GREATER_THAN)
)

Évaluer les versions historiques

L'exemple suivant définit latest_version_only sur False. Une ligne est renvoyée si n'importe quelle version de la colonne d'attribut status est online. Les lignes ne contenant pas la colonne status ne sont pas renvoyées.

column_filter = SingleColumnCondition(
    "status",
    "online",
    ComparatorType.EQUAL,
    pass_if_missing=False,
    latest_version_only=False,
)