Topik ini menjelaskan cara membaca rentang data dari Tablestore menggunakan .NET SDK.
Prasyarat
Metode
public GetRangeResponse GetRange(GetRangeRequest request)Metode asinkron:
public Task<GetRangeResponse> GetRangeAsync(GetRangeRequest request)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);