すべてのプロダクト
Search
ドキュメントセンター

Tablestore:フィルターの使用

最終更新日:Aug 13, 2026

Tablestore SDK for Go を使用すると、Wide Column モデルのデータを読み取る際に、サーバー側で行をフィルタリングしたり、返される属性列をページネーションしたりできます。

前提条件

Tablestore SDK for Go をインストールし、クライアントを初期化します。

説明

フィルターはサーバー側で読み取り結果を絞り込みますが、消費される読み取り CU は削減されません。 GetRowGetRange、または BatchGetRow のクエリ条件でフィルターを指定できます。 Tablestore SDK for Go は、次のフィルタータイプをサポートしています:

  • 単一列値フィルター (SingleColumnCondition):属性列の値を評価します。

  • 単一列値正規表現フィルター (SingleColumnValueRegexFilter):STRING 属性列から部分文字列を抽出し、その部分文字列を変換して、結果を比較します。

  • 複合フィルター (CompositeColumnCondition):ANDOR、または NOT を使用してフィルターを組み合わせます。複合フィルターには最大 32 個の条件を含めることができます。

  • 列ページネーションフィルター (PaginationFilter):列の値を評価せずに、オフセットとリミットに基づいて属性列を返します。

以下のサンプルでは、単一列の値フィルターを使用して、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)

パラメータ

単一列値フィルター

NewSingleColumnCondition(columnName, comparator, value) を呼び出して単一列値フィルターを作成します。 SingleColumnCondition には、次のパラメーターが含まれます。

名前

説明

ColumnName (必須)

*文字列

評価対象の属性列です。

Comparator (必須)

*ComparatorType

比較演算子。有効な値: CT_EQUALCT_NOT_EQUALCT_GREATER_THANCT_GREATER_EQUALCT_LESS_THAN、および CT_LESS_EQUAL

ColumnValue (必須)

interface{}

比較対象の値です。

FilterIfMissing (任意)

bool

列が欠落している場合に行をフィルターで除外するかどうかを指定します。デフォルト値は false で、行が返されます。

LatestVersionOnly (任意)

bool

最新バージョンのみを評価するかどうかを指定します。 デフォルト値は false で、いずれかのバージョンが条件を満たした場合に行を返します。

単一列値正規表現フィルター

NewSingleColumnValueRegexFilter(columnName, comparator, rule, value) を呼び出して正規表現フィルターを作成します。STRING 型の属性列のみが正規表現フィルターをサポートします。

単一列の値フィルターのパラメーターに加え、以下のパラメーターで ValueTransferRule を指定します。

名前

説明

Regex (必須)

文字列

部分文字列の抽出に使用する正規表現です。最大長: 256 バイト。

  • PCRE (Perl 互換正規表現) とシングルバイトの正規表現がサポートされています。

  • 正規表現パターンに中国語文字は使用できません。

  • キャプチャグループはサポートされています。正規表現にキャプチャグループが含まれている場合、最初のグループによってキャプチャされた部分文字列が使用されます。たとえば、属性列の値が 1aaa51bbb5 で、正規表現が 1([a-z]+)5 の場合、抽出された部分文字列は aaa になります。

Cast_type (必須)

VariantType

抽出された部分文字列の変換後の型です。有効な値は Variant_INTEGERVariant_DOUBLE、および Variant_STRING です。

複合フィルター

NewCompositeColumnCondition(lo) を呼び出して複合フィルターを作成し、AddFilter を呼び出してサブフィルターを追加します。

名前

説明

Operator (必須)

LogicalOperator

論理演算子。有効な値: LO_NOTLO_AND、および LO_OR

Filters (必須)

[]ColumnFilter

サブフィルターのリストです。次のタイプがサポートされています:

  • NewSingleColumnCondition を使用して作成された単一列の値フィルター。

  • NewSingleColumnValueRegexFilter で作成された単一列の値の正規表現フィルター。

  • 複合フィルターは NewCompositeColumnCondition を使用して作成され、ネストされたサブフィルターを含むことができます。

列ページネーションフィルター

PaginationFilter には、以下のパラメータが含まれます。

名前

説明

Limit (必須)

int32

返す属性列の数です。値は 0 より大きい必要があります。

Offset (任意)

int32

スキップする属性列の数。値は 0 以上である必要があります。デフォルト値: 0

正規表現フィルター

次のサンプルは、activeprofile 列の値 (level:active 形式) から抽出し、その結果を指定された値と比較します。

rule := tablestore.NewValueTransferRule(
    `level:([a-z]+)`,
    tablestore.Variant_STRING,
)
filter := tablestore.NewSingleColumnValueRegexFilter(
    "profile",
    tablestore.CT_EQUAL,
    rule,
    "active",
)
request.SingleRowQueryCriteria.Filter = filter

複合フィルター

次のサンプルは、score >= 60 かつ statusactive である行を返します。

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

返される属性列のページネーション

次のサンプルでは、最初の属性列をスキップし、次の 2 つの属性列を返します。

request.SingleRowQueryCriteria.Filter = &tablestore.PaginationFilter{
    Offset: 1,
    Limit:  2,
}