Table Store フィルターは、サーバ側で結果をフィルタリングするために使用されるため、サーバーはフィルター条件に一致する行または列のみを返します。 フィルターは、GetRow、BatchGetRow および GetRange API と共に使用できます。

現在、Table Store は SingleColumnValueFilter と CompositeColumnValueFilter の 2 つのフィルターをサポートしています。これらは、参照列の値に基づいて行のデータをフィルタリングするかどうかを決定するために使用されます。 SingleColumnValueFilter は単一の参照列の値のみをチェックしますが、CompositeColumnValueFilter は複数の参照列の値をチェックし、チェック結果を論理的に組み合わせて行データをフィルタリングするかどうかを決定します。

フィルターは、読み取られたデータをフィルタリングするために使用されます。そのため、SingleColumnValueFilter または CompositeColumnValueFilter によって使用される参照列を読み取り、データに含める必要があります。 データの読み取り元の列を指定しても、これらの列に参照列が含まれていない場合、フィルターは参照列の値を取得できません。 参照列が存在しない場合、SingleColumnValueFilter は passIfMissing パラメーターを使用してフィルター条件が満たされているかどうかを判断します。 つまり、参照列が存在しない場合でもアクションを選択できます。

例 1

SingleColumnValueFilter を構築します。

        // フィルターを設定します。 Col0 値が 0 の場合、この行が返されます。
        SingleColumnValueFilter singleColumnValueFilter = new SingleColumnValueFilter("Col0",
                SingleColumnValueFilter.CompareOperator.EQUAL, ColumnValue.fromLong(0));
        // 列 Col0 が存在しない場合、データは返されません。
        singleColumnValueFilter.setPassIfMissing(false);
        // 最新バージョンを判断するだけです。
        singleColumnValueFilter.setLatestVersionsOnly(true);
		

例 2

CompositeColumnValueFilter を構築します。

        // 条件 composite1 は  (Col0 == 0) AND (Col1 > 100) です。
        CompositeColumnValueFilter composite1 = new CompositeColumnValueFilter(CompositeColumnValueFilter.LogicOperator.AND);
        SingleColumnValueFilter single1 = new SingleColumnValueFilter("Col0",
                SingleColumnValueFilter.CompareOperator.EQUAL, ColumnValue.fromLong(0));
        SingleColumnValueFilter single2 = new SingleColumnValueFilter("Col1",
                SingleColumnValueFilter.CompareOperator.GREATER_THAN, ColumnValue.fromLong(100));
        composite1.addFilter(single1);
        composite1.addFilter(single2);

        // 条件 composite2 は、 ( (Col0 == 0) AND (Col1 > 100) ) OR (Col2 <= 10) です。
        CompositeColumnValueFilter composite2 = new CompositeColumnValueFilter(CompositeColumnValueFilter.LogicOperator.OR);
        SingleColumnValueFilter single3 = new SingleColumnValueFilter("Col2",
                SingleColumnValueFilter.CompareOperator.LESS_EQUAL, ColumnValue.fromLong(10));
        composite2.addFilter(composite1);
        composite2.addFilter(single3);