Lors de la lecture de données du modèle Wide Column, utilisez le SDK Tablestore pour Go afin de filtrer les lignes ou de paginer les colonnes d'attributs renvoyées côté serveur.
Prérequis
Installez le SDK Tablestore pour Go et initialisez le client.
Description
Un filtre permet de trier les résultats de lecture côté serveur sans réduire le nombre d'unités de capacité de lecture (CU) consommées. Spécifiez un filtre dans les critères de requête des opérations GetRow, GetRange ou BatchGetRow. Le SDK Tablestore pour Go prend en charge les types de filtres suivants :
Filtre de valeur sur colonne unique (
SingleColumnCondition) : évalue la valeur d'une colonne d'attribut.Filtre d'expression régulière sur valeur de colonne unique (
SingleColumnValueRegexFilter) : extrait une sous-chaîne d'une colonne d'attribut de type STRING, convertit cette sous-chaîne, puis compare le résultat.Filtre composite (
CompositeColumnCondition) : combine des filtres à l'aide des opérateurs AND, OR ou NOT. Un filtre composite peut contenir jusqu'à 32 conditions.Filtre de pagination de colonnes (
PaginationFilter) : renvoie des colonnes d'attributs en fonction d'un décalage et d'un compte, sans évaluer les valeurs des colonnes.
L'exemple suivant utilise un filtre de valeur sur colonne unique pour renvoyer uniquement les lignes où 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)
Paramètres
Filtre de valeur sur colonne unique
Appelez NewSingleColumnCondition(columnName, comparator, value) pour créer un filtre de valeur sur colonne unique. L'objet SingleColumnCondition contient les paramètres suivants.
|
Nom |
Type |
Description |
|
ColumnName (obligatoire) |
|
La colonne d'attribut à évaluer. |
|
Comparator (obligatoire) |
|
L'opérateur de comparaison. Valeurs valides : |
|
ColumnValue (obligatoire) |
|
La valeur à comparer. |
|
FilterIfMissing (facultatif) |
|
Indique si la ligne doit être filtrée lorsque la colonne est absente. Valeur par défaut : |
|
LatestVersionOnly (facultatif) |
|
Indique si seule la dernière version doit être évaluée. Valeur par défaut : |
Filtre d'expression régulière sur valeur de colonne unique
Appelez NewSingleColumnValueRegexFilter(columnName, comparator, rule, value) pour créer un filtre d'expression régulière. Seules les colonnes d'attributs de type STRING prennent en charge les filtres d'expression régulière.
En plus des paramètres d'un filtre de valeur sur colonne unique, spécifiez un objet ValueTransferRule avec les paramètres suivants.
|
Nom |
Type |
Description |
|
Regex (obligatoire) |
|
L'expression régulière utilisée pour extraire une sous-chaîne. Longueur maximale : 256 octets.
|
|
Cast_type (obligatoire) |
|
Le type vers lequel la sous-chaîne extraite est convertie. Valeurs valides : |
Filtre composite
Appelez NewCompositeColumnCondition(lo) pour créer un filtre composite, puis appelez AddFilter pour ajouter des sous-filtres.
|
Nom |
Type |
Description |
|
Operator (obligatoire) |
|
L'opérateur logique. Valeurs valides : |
|
Filters (obligatoire) |
|
Les sous-filtres à combiner. Les types suivants sont pris en charge :
|
Filtre de pagination de colonnes
L'objet PaginationFilter contient les paramètres suivants.
|
Nom |
Type |
Description |
|
Limit (obligatoire) |
|
Le nombre de colonnes d'attributs à renvoyer. La valeur doit être supérieure à 0. |
|
Offset (facultatif) |
|
Le nombre de colonnes d'attributs à ignorer. La valeur doit être supérieure ou égale à 0. Valeur par défaut : |
Exemples
Filtre d'expression régulière
L'exemple suivant extrait active d'une valeur de colonne profile au format level:active et compare le résultat avec une valeur spécifiée.
rule := tablestore.NewValueTransferRule(
`level:([a-z]+)`,
tablestore.Variant_STRING,
)
filter := tablestore.NewSingleColumnValueRegexFilter(
"profile",
tablestore.CT_EQUAL,
rule,
"active",
)
request.SingleRowQueryCriteria.Filter = filter
Filtre composite
L'exemple suivant renvoie les lignes pour lesquelles score >= 60 et status est égal à 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
Paginer les colonnes d'attributs renvoyées
L'exemple suivant ignore la première colonne d'attribut et renvoie les deux colonnes d'attributs suivantes.
request.SingleRowQueryCriteria.Filter = &tablestore.PaginationFilter{
Offset: 1,
Limit: 2,
}