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

Tablestore:行の読み取り

最終更新日:Jun 26, 2026

Tablestore SDK for Java は、プライマリキーを使用してデータテーブルから 1 行を読み取ります。リクエストオプションを使用して、返される列を制限したり、バージョン範囲を制限したり、列の値に基づいてフィルターを適用したりできます。

前提条件

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

メソッド定義

public GetRowResponse getRow(GetRowRequest getRowRequest) throws TableStoreException, ClientException

主キーを使用してデータテーブルから単一の行を読み取ります。SingleRowQueryCriteria でクエリ条件を指定し、response.getRow() で結果を取得します。

説明

maxVersions または timeRange のうち、少なくとも 1 つを設定してください。設定しない場合、サーバーはパラメーターエラーを返します。

次の例では、get_row_demo テーブルからプライマリキーが row1 の行を読み取り、各列の最新バージョンのみを返します。

String tableName = "get_row_demo";

PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row1"));
PrimaryKey primaryKey = primaryKeyBuilder.build();

SingleRowQueryCriteria criteria = new SingleRowQueryCriteria(tableName, primaryKey);
criteria.setMaxVersions(1);

GetRowResponse response = client.getRow(new GetRowRequest(criteria));
System.out.println("RequestId: " + response.getRequestId());
System.out.println("Read CU: " + response.getConsumedCapacity().getCapacityUnit().getReadCapacityUnit());
System.out.println("Row: " + response.getRow());

パラメーター

SingleRowQueryCriteria で、以下のパラメーターを設定します:

名前

タイプ

説明

tableName (必須)

String

読み取り元のデータテーブル名。

primaryKey (必須)

PrimaryKey

プライマリキー列とその値。

  • サポートされるプライマリキー列のタイプは STRING、INTEGER、BINARY です。

  • プライマリキー列の数とタイプは、テーブルのプライマリキーのスキーマと一致している必要があります。

  • テーブルにオートインクリメント列がある場合は、その列の実際の値を含む完全なプライマリキーを指定してください。

maxVersions (2 つのうち 1 つ)

OptionalValue<Integer>

返されるバージョンの最大数。 maxVersions または timeRange の少なくとも 1 つを設定します。

新しい順に、指定した数までバージョンを返します。

timeRange (2 つのうち 1 つ)

OptionalValue<TimeRange>

返されるバージョンの範囲です。maxVersions または timeRange の少なくとも 1 つを設定します。

各属性列は複数のバージョンを持つことができます。バージョン範囲を設定すると、その範囲内のバージョンのみを返します。

columnsToGet (オプション)

Set<String>

読み取る列。リストには、プライマリキー列と属性列の両方を含めることができます。

  • columnsToGet が設定されていない場合、行全体が返されます。

  • columnsToGet が設定されていても、行に指定された列が 1 つも含まれていない場合、Tablestore は null を返します。

filter (オプション)

OptionalValue<Filter>

フィルター条件。 詳細については、「Use filters」をご参照ください。

columnsToGetfilter の両方を設定した場合、Tablestore はまず columnsToGet で列を選択し、次に filter を適用します。

特定の属性列の読み取り

addColumnsToGet を使用して、読み取る属性列名を指定します。指定した列のみが返されます。

String tableName = "get_row_demo";

PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row1"));
PrimaryKey primaryKey = primaryKeyBuilder.build();

SingleRowQueryCriteria criteria = new SingleRowQueryCriteria(tableName, primaryKey);
criteria.setMaxVersions(1);

// col1 と col2 のみを読み取り
criteria.addColumnsToGet("col1");
criteria.addColumnsToGet("col2");

GetRowResponse response = client.getRow(new GetRowRequest(criteria));
System.out.println("Row (selected columns): " + response.getRow());

バージョン範囲による読み取り

setTimeRange を使用してバージョン時間範囲を指定します。その範囲内のバージョンのみが返されます。

String tableName = "get_row_demo";

PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row1"));
PrimaryKey primaryKey = primaryKeyBuilder.build();

SingleRowQueryCriteria criteria = new SingleRowQueryCriteria(tableName, primaryKey);

// 過去 1 日分のすべてのバージョンを読み取り
long now = System.currentTimeMillis();
criteria.setTimeRange(new TimeRange(now - 86400 * 1000L, now));
criteria.setMaxVersions(Integer.MAX_VALUE);

GetRowResponse response = client.getRow(new GetRowRequest(criteria));
System.out.println("Row (time range): " + response.getRow());

フィルターを使用した読み取り

setFilter を使用して列値フィルターを設定します。Tablestore は、フィルター条件に一致する場合にのみ行を返します。

String tableName = "get_row_demo";

PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row1"));
PrimaryKey primaryKey = primaryKeyBuilder.build();

SingleRowQueryCriteria criteria = new SingleRowQueryCriteria(tableName, primaryKey);
criteria.setMaxVersions(1);

// col1 が "val1" と等しい場合にのみ行を返す
SingleColumnValueFilter filter = new SingleColumnValueFilter(
        "col1",
        SingleColumnValueFilter.CompareOperator.EQUAL,
        ColumnValue.fromString("val1"));
// 列が存在しない場合は行をスキップ
filter.setPassIfMissing(false);
criteria.setFilter(filter);

GetRowResponse response = client.getRow(new GetRowRequest(criteria));
System.out.println("Row (filtered): " + response.getRow());

関連ドキュメント