このトピックでは、Java SDK を使用して Tablestore から複数のデータ行を読み取る方法について説明します。複数のテーブルからデータをクエリできます。
注意事項
1 回のバッチ読み取り操作で最大 100 行のデータを読み取ることができます。
前提条件
メソッド
public BatchGetRowResponse batchGetRow(BatchGetRowRequest batchGetRowRequest) throws TableStoreException, ClientExceptionサンプルコード
次のサンプルコードは、test_table テーブルからプライマリキー値 row1 と row2 を持つ 2 つのデータ行を読み取ります。
public static void batchGetRowExample(SyncClient client) {
// クエリ条件を構築する
MultiRowQueryCriteria multiRowQueryCriteria = new MultiRowQueryCriteria("test_table");
// 1 行目のプライマリキー情報を追加する
PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row1"));
multiRowQueryCriteria.addRow(primaryKeyBuilder.build());
// 2 行目のプライマリキー情報を追加する
primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row2"));
multiRowQueryCriteria.addRow(primaryKeyBuilder.build());
// クエリするバージョンを設定する
multiRowQueryCriteria.setMaxVersions(1);
// batchGetRow メソッドを呼び出して、バッチデータクエリを実行する
BatchGetRowRequest batchGetRowRequest = new BatchGetRowRequest();
batchGetRowRequest.addMultiRowQueryCriteria(multiRowQueryCriteria);
BatchGetRowResponse batchGetRowResponse = client.batchGetRow(batchGetRowRequest);
// 返された結果を処理する
System.out.println("* RequestId: " + batchGetRowResponse.getRequestId());
System.out.println("* すべて成功しましたか: " + batchGetRowResponse.isAllSucceed());
// 正常に読み取られた行を出力する
System.out.println("* 成功した行: ");
for(BatchGetRowResponse.RowResult rowResult:batchGetRowResponse.getSucceedRows())
System.out.println(rowResult.getRow());
// 読み取りに失敗した行を出力する
if(!batchGetRowResponse.isAllSucceed()) {
System.out.println("* 失敗した行: ");
for(BatchGetRowResponse.RowResult rowResult:batchGetRowResponse.getFailedRows())
System.out.println(rowResult.getTableName() + " | " + batchGetRowRequest.getPrimaryKey(rowResult.getTableName(), rowResult.getIndex()) + " | " + rowResult.getError());
}
}バッチでデータを読み取るときにパラメーターを設定するには、次のサンプルコードを参照できます。
複数のテーブルからデータを読み取る。バッチ読み取り操作では、一度に複数のテーブルからデータを読み取ることができます。テーブルごとに MultiRowQueryCriteria オブジェクトを指定する必要があります。
// 2 番目のテーブルのクエリ条件を構築する MultiRowQueryCriteria multiRowQueryCriteria1 = new MultiRowQueryCriteria("orders_small"); // 1 行目のプライマリキー情報を追加する primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder(); primaryKeyBuilder.addPrimaryKeyColumn("order_id", PrimaryKeyValue.fromString("90fb478c-1360-11f0-a34d-00163e30a2a9")); multiRowQueryCriteria1.addRow(primaryKeyBuilder.build()); // クエリするバージョンを設定する multiRowQueryCriteria1.setMaxVersions(1); // リクエストに MultiRowQueryCriteria を追加する batchGetRowRequest.addMultiRowQueryCriteria(multiRowQueryCriteria1);読み取るバージョン範囲を設定する。バージョン範囲内のデータのみが返されます。
// 1 日前から現在までのデータを読み取るバージョン範囲を設定する multiRowQueryCriteria.setTimeRange(new TimeRange(System.currentTimeMillis() - 86400*1000, System.currentTimeMillis()));読み取る属性列を指定する。
multiRowQueryCriteria.addColumnsToGet("col1");