All Products
Search
Document Center

Tablestore:Membaca rentang data

Last Updated:May 12, 2026

Topik ini menjelaskan cara membaca rentang data dari Tablestore menggunakan .NET SDK.

Prasyarat

Inisialisasi client Tablestore

Metode

public GetRangeResponse GetRange(GetRangeRequest request)

Metode asinkron:

public Task<GetRangeResponse> GetRangeAsync(GetRangeRequest request)

Parameter GetRangeRequest

Parameter

Jenis

Deskripsi

tableName (Wajib)

string

Nama tabel.

inclusiveStartPrimaryKey (Wajib)

PrimaryKey

Kunci primer awal dari rentang, mencakup nama dan nilai kolom kunci primer.

  • Data yang dikembalikan termasuk kunci primer awal.

  • Jumlah dan tipe kunci primer harus sesuai dengan yang ada di tabel.

  • Untuk pembacaan maju, kunci primer awal harus lebih kecil daripada kunci primer akhir.

  • Untuk pembacaan mundur, kunci primer awal harus lebih besar daripada kunci primer akhir.

  • ColumnValue.INF_MIN merepresentasikan negatif tak hingga dan ColumnValue.INF_MAX merepresentasikan positif tak hingga.

exclusiveEndPrimaryKey (Wajib)

PrimaryKey

Kunci primer akhir dari rentang, mencakup nama dan nilai kolom kunci primer.

  • Data yang dikembalikan tidak termasuk kunci primer akhir.

  • Jumlah dan tipe kunci primer harus sesuai dengan yang ada di tabel.

  • ColumnValue.INF_MIN merepresentasikan negatif tak hingga dan ColumnValue.INF_MAX merepresentasikan positif tak hingga.

direction (Wajib)

GetRangeDirection

Arah pembacaan.

  • GetRangeDirection.Forward: Melakukan pembacaan maju.

  • GetRangeDirection.Backward: Melakukan pembacaan mundur.

limit (Opsional)

int

Jumlah maksimum baris yang akan dikembalikan. Nilainya harus lebih besar dari 0. Jika jumlah baris yang sesuai melebihi nilai ini, respons akan menyertakan jumlah baris yang ditentukan dan nilai NextPrimaryKey yang dapat Anda gunakan untuk permintaan berikutnya.

columnsToGet (Opsional)

HashSet<string>

Kolom yang akan dibaca. Anda dapat menentukan kolom kunci primer atau kolom atribut.

  • Jika diabaikan, operasi akan mengembalikan seluruh baris.

  • Jika ditentukan, respons hanya mencakup kolom kunci primer dan kolom atribut yang ditentukan yang ada dalam baris tersebut.

condition (Opsional)

IColumnCondition

Filter yang diterapkan pada baris. Untuk informasi selengkapnya, lihat Filter.

  • Jika Anda menetapkan columnsToGet dan condition, Tablestore terlebih dahulu menerapkan condition untuk memfilter baris. Kemudian, dari baris yang sesuai, hanya kolom yang ditentukan dalam columnsToGet yang dikembalikan.

Contoh kode

Contoh kode berikut menunjukkan cara membaca data dari tabel test_table dengan nilai kunci primer lebih besar dari row1.

try
{
    // Tetapkan kunci primer awal.
    PrimaryKey inclusiveStartPrimaryKey = new PrimaryKey()
    {
        { "id", new ColumnValue("row1") }
    };
    // Tetapkan kunci primer akhir. Set hasil tidak menyertakan kunci primer akhir.
    PrimaryKey exclusiveEndPrimaryKey = new PrimaryKey()
    {
        { "id", ColumnValue.INF_MAX }
    };

    // Panggil metode GetRange untuk membaca baris.
    GetRangeRequest getRangeRequest = new GetRangeRequest("test_table", GetRangeDirection.Forward, inclusiveStartPrimaryKey, exclusiveEndPrimaryKey);
    GetRangeResponse getRangeResponse = client.GetRange(getRangeRequest);

    // Proses respons.
    Console.WriteLine($"RequestId: {getRangeResponse.RequestID}");
    Console.WriteLine($"Read CU Cost: {getRangeResponse.ConsumedCapacityUnit.Read}");
    Console.WriteLine($"Write CU Cost: {getRangeResponse.ConsumedCapacityUnit.Write}");
    Console.WriteLine("Row Data: ");
    foreach (Row row in getRangeResponse.RowDataList)
    {
        Console.WriteLine(row);
    }
}
catch (Exception ex)
{
    Console.WriteLine($"Get Range gagal, exception: {ex.Message}");
}

Satu permintaan GetRange dapat mengembalikan maksimal 5.000 baris atau 4 MB data. Jika data yang sesuai melebihi batas tersebut, respons akan menyertakan nilai NextPrimaryKey. Untuk mengambil sisa data, gunakan nilai ini sebagai inclusiveStartPrimaryKey pada permintaan GetRange berikutnya. Kode berikut menunjukkan cara menggunakan perulangan untuk mengiterasi semua baris yang sesuai.

while (true)
{
    // Panggil metode GetRange untuk membaca baris.
    GetRangeRequest getRangeRequest = new GetRangeRequest("test_table", GetRangeDirection.Forward, inclusiveStartPrimaryKey, exclusiveEndPrimaryKey);
    GetRangeResponse getRangeResponse = client.GetRange(getRangeRequest);

    // Proses respons.
    Console.WriteLine($"RequestId: {getRangeResponse.RequestID}");
    Console.WriteLine($"Read CU Cost: {getRangeResponse.ConsumedCapacityUnit.Read}");
    Console.WriteLine($"Write CU Cost: {getRangeResponse.ConsumedCapacityUnit.Write}");
    Console.WriteLine("Row Data: ");
    foreach (Row row in getRangeResponse.RowDataList)
    {
        Console.WriteLine(row);
    }

    if (getRangeResponse.NextPrimaryKey != null)
    {
        inclusiveStartPrimaryKey = getRangeResponse.NextPrimaryKey;
    }
    else
    {
        break;
    }
}

Anda juga dapat mengonfigurasi kueri dengan pengaturan berikut.

  • Tetapkan arah pembacaan data.

    // Tetapkan kunci primer awal. Untuk pembacaan mundur, kunci primer awal harus lebih besar daripada kunci primer akhir.
    PrimaryKey inclusiveStartPrimaryKey = new PrimaryKey()
    {
        { "id", ColumnValue.INF_MAX }
    };
    // Tetapkan kunci primer akhir. Set hasil tidak menyertakan kunci primer akhir.
    PrimaryKey exclusiveEndPrimaryKey = new PrimaryKey()
    {
        { "id", new ColumnValue("row1") }
    };
    
    // Panggil metode GetRange untuk membaca baris secara mundur.
    GetRangeRequest getRangeRequest = new GetRangeRequest("test_table", GetRangeDirection.Backward, inclusiveStartPrimaryKey, exclusiveEndPrimaryKey);
  • Tentukan kolom atribut yang akan dibaca.

    HashSet<string> columnsToGet = new HashSet<string> { "col2" };
    
    // Panggil metode GetRange untuk membaca baris.
    GetRangeRequest getRangeRequest = new GetRangeRequest("test_table", GetRangeDirection.Forward, inclusiveStartPrimaryKey, exclusiveEndPrimaryKey, columnsToGet, null);
  • Tetapkan jumlah maksimum baris yang akan dikembalikan.

    int limit = 10;
    
    // Panggil metode GetRange untuk membaca baris.
    GetRangeRequest getRangeRequest = new GetRangeRequest("test_table", GetRangeDirection.Forward, inclusiveStartPrimaryKey, exclusiveEndPrimaryKey, null, limit);

Topik terkait