All Products
Search
Document Center

Tablestore:Batch read rows

Last Updated:Jun 26, 2026

Baca beberapa baris dari satu atau beberapa tabel dalam satu permintaan menggunakan Tablestore SDK for Java. Setiap baris menghasilkan respons independen, sehingga Anda dapat mengambil catatan detail secara batch berdasarkan kunci primer.

Prasyarat

Instal Tablestore SDK for Java dan inisialisasi klien.

Deskripsi

public BatchGetRowResponse batchGetRow(BatchGetRowRequest batchGetRowRequest) throws TableStoreException, ClientException

Baca beberapa baris dalam satu permintaan. Objek BatchGetRowRequest berisi satu atau lebih objek MultiRowQueryCriteria yang ditambahkan dengan memanggil metode addMultiRowQueryCriteria. Setiap objek MultiRowQueryCriteria menargetkan satu tabel. Semua baris dalam kriteria tersebut menggunakan kondisi kueri yang sama, seperti maxVersions, columnsToGet, dan filter.

Server memproses setiap baris secara independen—kegagalan pada satu baris tidak memengaruhi baris lainnya. Panggil metode isAllSucceed, getSucceedRows, atau getFailedRows untuk memeriksa hasil pada tingkat baris.

Catatan

Satu panggilan BatchGetRow dapat mengambil hingga 100 baris.

Contoh berikut membaca dua baris (dengan kunci primer row1 dan row2) dari tabel batch_get_demo dan hanya mengembalikan versi terbaru dari setiap kolom.

String tableName = "batch_get_demo";

MultiRowQueryCriteria criteria = new MultiRowQueryCriteria(tableName);

// Tambahkan kunci primer untuk baris 1
PrimaryKeyBuilder pkb1 = PrimaryKeyBuilder.createPrimaryKeyBuilder();
pkb1.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row1"));
criteria.addRow(pkb1.build());

// Tambahkan kunci primer untuk baris 2
PrimaryKeyBuilder pkb2 = PrimaryKeyBuilder.createPrimaryKeyBuilder();
pkb2.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row2"));
criteria.addRow(pkb2.build());

criteria.setMaxVersions(1);

BatchGetRowRequest request = new BatchGetRowRequest();
request.addMultiRowQueryCriteria(criteria);

BatchGetRowResponse response = client.batchGetRow(request);
System.out.println("RequestId: " + response.getRequestId());
System.out.println("All Succeeded: " + response.isAllSucceed());

for (BatchGetRowResponse.RowResult rowResult : response.getSucceedRows()) {
    System.out.println("Succeeded: " + rowResult.getRow());
}
if (!response.isAllSucceed()) {
    for (BatchGetRowResponse.RowResult fail : response.getFailedRows()) {
        System.out.println("Failed: table=" + fail.getTableName()
                + " index=" + fail.getIndex()
                + " error=" + fail.getError());
    }
}

Parameter yang diperlukan adalah tableName, rowKeys, serta salah satu dari maxVersions atau timeRange. Lihat tabel Parameter untuk skema lengkapnya.

Parameter

Objek MultiRowQueryCriteria berisi kondisi kueri batch untuk satu tabel.

Name

Type

Description

tableName (required)

String

Nama tabel yang akan dibaca.

rowKeys (required)

List<PrimaryKey>

Daftar kunci primer, ditambahkan dengan memanggil addRow(PrimaryKey). Semua baris dalam kriteria ini menggunakan kondisi kueri yang sama.

maxVersions (one required)

OptionalValue<Integer>

Jumlah maksimum versi yang akan dibaca. Tetapkan minimal salah satu dari maxVersions atau timeRange.

Jika suatu kolom memiliki lebih banyak versi daripada maxVersions, hanya versi terbaru yang dikembalikan, hingga sebanyak maxVersions.

timeRange (one required)

OptionalValue<TimeRange>

Rentang waktu yang akan dibaca. Tetapkan minimal salah satu dari maxVersions atau timeRange.

Setiap kolom atribut dapat memiliki beberapa versi. Setelah Anda menetapkan rentang waktu, Tablestore hanya mengembalikan versi yang berada dalam rentang tersebut.

columnsToGet (optional)

Set<String>

Kolom yang akan dibaca — baik kolom kunci primer maupun kolom atribut.

  • Jika Anda tidak menetapkan columnsToGet, Tablestore mengembalikan seluruh baris.

  • Jika Anda menetapkan columnsToGet tetapi baris tidak berisi kolom yang ditentukan, Tablestore mengembalikan null.

filter (optional)

OptionalValue<Filter>

Kondisi filter. Untuk detailnya, lihat Use filters.

Jika Anda menetapkan columnsToGet dan filter, Tablestore terlebih dahulu memilih kolom yang ditentukan dalam columnsToGet, lalu menerapkan filter pada baris-baris tersebut.

Skenario

Read across multiple tables

Untuk membaca dari beberapa tabel dalam satu permintaan, buat satu objek MultiRowQueryCriteria untuk setiap tabel, lalu tambahkan masing-masing ke permintaan menggunakan metode addMultiRowQueryCriteria.

String tableA = "batch_get_demo";
String tableB = "batch_get_demo_2";

BatchGetRowRequest request = new BatchGetRowRequest();

// Kondisi kueri untuk tabel A
MultiRowQueryCriteria criteriaA = new MultiRowQueryCriteria(tableA);
PrimaryKeyBuilder pkA = PrimaryKeyBuilder.createPrimaryKeyBuilder();
pkA.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row1"));
criteriaA.addRow(pkA.build());
criteriaA.setMaxVersions(1);
request.addMultiRowQueryCriteria(criteriaA);

// Kondisi kueri untuk tabel B
MultiRowQueryCriteria criteriaB = new MultiRowQueryCriteria(tableB);
PrimaryKeyBuilder pkB = PrimaryKeyBuilder.createPrimaryKeyBuilder();
pkB.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("rowA"));
criteriaB.addRow(pkB.build());
criteriaB.setMaxVersions(1);
request.addMultiRowQueryCriteria(criteriaB);

BatchGetRowResponse response = client.batchGetRow(request);
System.out.println("Total succeeded rows: " + response.getSucceedRows().size());

Read with a filter

Panggil metode setFilter untuk menyambungkan filter nilai kolom ke kriteria. Semua baris dalam objek MultiRowQueryCriteria ini menggunakan filter yang sama, dan Tablestore hanya mengembalikan baris yang cocok.

String tableName = "batch_get_demo";

MultiRowQueryCriteria criteria = new MultiRowQueryCriteria(tableName);

PrimaryKeyBuilder pkb1 = PrimaryKeyBuilder.createPrimaryKeyBuilder();
pkb1.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row1"));
criteria.addRow(pkb1.build());
PrimaryKeyBuilder pkb2 = PrimaryKeyBuilder.createPrimaryKeyBuilder();
pkb2.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row2"));
criteria.addRow(pkb2.build());

criteria.setMaxVersions(1);

// Kembalikan hanya baris di mana col1 bernilai "val1"
SingleColumnValueFilter filter = new SingleColumnValueFilter(
        "col1",
        SingleColumnValueFilter.CompareOperator.EQUAL,
        ColumnValue.fromString("val1"));
filter.setPassIfMissing(false);
criteria.setFilter(filter);

BatchGetRowRequest request = new BatchGetRowRequest();
request.addMultiRowQueryCriteria(criteria);

BatchGetRowResponse response = client.batchGetRow(request);
int matched = 0;
for (BatchGetRowResponse.RowResult rowResult : response.getSucceedRows()) {
    if (rowResult.getRow() != null) {
        matched++;
    }
}
System.out.println("Rows matching filter: " + matched);

Referensi