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

Tablestore:行の読み取り

最終更新日:Aug 06, 2026

Tablestore SDK for Java を使用して、完全なプライマリキーを指定して、Wide Column モデルのテーブルから行を読み取ります。

前提条件

Tablestore SDK for Java をインストールして、クライアントを初期化してください。

説明

getRow API を呼び出して、完全なプライマリキーを指定して行を読み取ります。返される列、データバージョン範囲、およびフィルター条件を指定できます。

public GetRowResponse getRow(GetRowRequest getRowRequest) throws TableStoreException, ClientException
説明

maxVersions または timeRange の少なくとも一方を設定する必要があります。それ以外の場合、サーバーはパラメーターエラーを返します。

次の例では、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("Row: " + response.getRow());

パラメーター

GetRowRequest には次のパラメーターが含まれます。

名前

説明

rowQueryCriteria (必須)

SingleRowQueryCriteria

行を読み取るための条件です。

transactionId (オプション)

String

ローカルトランザクション ID です。ローカルトランザクション内でデータを読み取る場合にのみ、このパラメーターを設定します。

ID の取得方法と使用方法については、「ローカルトランザクションの使用」をご参照ください。

単一行クエリ条件

rowQueryCriteriaSingleRowQueryCriteria 型で、次のパラメーターが含まれます。

名前

説明

tableName (必須)

String

テーブルの名前です。

primaryKey (必須)

PrimaryKey

行のプライマリキーです。テーブルスキーマと同じ順序と型で、すべてのプライマリキー列を指定します。プライマリキー列は、STRINGINTEGER、および BINARY 型をサポートします。プライマリキーに自動増分列が含まれる場合は、その実際の値を指定します。

maxVersions (オプション)

Integer

返されるデータバージョンの最大数です。一致するバージョンが多い場合、Tablestore は新しい順にバージョンを返します。maxVersionstimeRange の少なくとも一方を設定する必要があります。

timeRange (オプション)

TimeRange

データバージョンの時間範囲です。範囲内のバージョンのみが返されます。maxVersionstimeRange の少なくとも一方を設定する必要があります。

columnsToGet (オプション)

Set<String>

返される列です。このパラメーターを指定しない場合、行全体が返されます。指定した列がその行に1つも含まれていない場合、null が返されます。

filter (オプション)

Filter

フィルター条件です。columnsToGetfilter の両方を指定した場合、フィルターは columnsToGet で指定された列の値に基づいて評価されます。

フィルターの設定方法については、「フィルターの使用」をご参照ください。

レスポンス

GetRowResponse には、次の操作固有のフィールドが含まれます。

フィールド

説明

row

Row

getRow を呼び出して取得された行です。行が存在しない、フィルター条件を満たさない、またはcolumnsToGetで指定された列がその行に一つも含まれていない場合、null が返されます。

特定の属性列の読み取り

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());