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

Tablestore:範囲データの読み取り

最終更新日:May 12, 2026

このトピックでは、.NET SDK を使用して Tablestore から範囲データを読み取る方法について説明します。

前提条件

Tablestore クライアントの初期化

メソッド

public GetRangeResponse GetRange(GetRangeRequest request)

非同期メソッド:

public Task<GetRangeResponse> GetRangeAsync(GetRangeRequest request)

GetRangeRequest パラメーター

パラメーター

タイプ

説明

tableName (必須)

string

テーブル名です。

inclusiveStartPrimaryKey (必須)

PrimaryKey

範囲の開始プライマリキーです (プライマリキー列の名前と値を含みます)。

  • 返されるデータには開始プライマリキーが 含まれます

  • プライマリキーの数と型は、テーブルの定義と一致する必要があります。

  • フォワード読み取りの場合、開始プライマリキーは終了プライマリキーより小さい必要があります。

  • バックワード読み取りの場合、開始プライマリキーは終了プライマリキーより大きい必要があります。

  • ColumnValue.INF_MIN は負の無限大を表し、ColumnValue.INF_MAX は正の無限大を表します。

exclusiveEndPrimaryKey (必須)

PrimaryKey

範囲の終了プライマリキーです (プライマリキー列の名前と値を含みます)。

  • 返されるデータには終了プライマリキーは 含まれません

  • プライマリキーの数と型は、テーブルの定義と一致する必要があります。

  • ColumnValue.INF_MIN は負の無限大を表し、ColumnValue.INF_MAX は正の無限大を表します。

direction (必須)

GetRangeDirection

読み取り方向です。

  • GetRangeDirection.Forward: フォワード読み取りを実行します。

  • GetRangeDirection.Backward: バックワード読み取りを実行します。

limit (オプション)

int

返される行の最大数です。値は 0 より大きい必要があります。一致する行の数がこの値を超える場合、応答には指定された数の行と、次のリクエストで使用する NextPrimaryKey 値が含まれます。

columnsToGet (オプション)

HashSet<string>

読み取る列です。プライマリキー列または属性列を指定できます。

  • 省略した場合、行全体が返されます。

  • 指定した場合、応答にはプライマリキー列と、指定された属性列のうち行に存在する列のみが含まれます。

condition (オプション)

IColumnCondition

行に適用するフィルターです。詳細については、「フィルター」をご参照ください。

  • columnsToGetcondition の両方を設定した場合、 Tablestore はまず condition を適用して行をフィルタリングします。次に、一致した行から、columnsToGet で指定された列のみを返します。

コード例

次のコード例では、test_table テーブルからプライマリキー値が row1 より大きいデータを読み取る方法を示します。

try
{
    // 開始プライマリキーを設定します。
    PrimaryKey inclusiveStartPrimaryKey = new PrimaryKey()
    {
        { "id", new ColumnValue("row1") }
    };
    // 終了プライマリキーを設定します。結果セットには終了プライマリキーは含まれません。
    PrimaryKey exclusiveEndPrimaryKey = new PrimaryKey()
    {
        { "id", ColumnValue.INF_MAX }
    };

    // GetRange メソッドを呼び出して行を読み取ります。
    GetRangeRequest getRangeRequest = new GetRangeRequest("test_table", GetRangeDirection.Forward, inclusiveStartPrimaryKey, exclusiveEndPrimaryKey);
    GetRangeResponse getRangeResponse = client.GetRange(getRangeRequest);

    // 応答を処理します。
    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 failed, exception: {ex.Message}");
}

1 回の GetRange リクエストで返すことができるデータは、最大 5,000 行または 4 MB です。クエリ範囲に一致するデータがさらに存在する場合、応答には NextPrimaryKey 値が含まれます。残りのデータを取得するには、次の GetRange リクエストでこの値を inclusiveStartPrimaryKey として使用します。次のコードは、ループを使用して一致するすべての行を反復処理する方法を示しています。

while (true)
{
    // GetRange メソッドを呼び出して行を読み取ります。
    GetRangeRequest getRangeRequest = new GetRangeRequest("test_table", GetRangeDirection.Forward, inclusiveStartPrimaryKey, exclusiveEndPrimaryKey);
    GetRangeResponse getRangeResponse = client.GetRange(getRangeRequest);

    // 応答を処理します。
    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;
    }
}

次の設定を使用してクエリを構成することもできます。

  • データ読み取り方向の設定。

    // 開始プライマリキーを設定します。バックワード読み取りの場合、開始プライマリキーは終了プライマリキーより大きい必要があります。
    PrimaryKey inclusiveStartPrimaryKey = new PrimaryKey()
    {
        { "id", ColumnValue.INF_MAX }
    };
    // 終了プライマリキーを設定します。結果セットには終了プライマリキーは含まれません。
    PrimaryKey exclusiveEndPrimaryKey = new PrimaryKey()
    {
        { "id", new ColumnValue("row1") }
    };
    
    // GetRange メソッドを呼び出してバックワード方向に行を読み取ります。
    GetRangeRequest getRangeRequest = new GetRangeRequest("test_table", GetRangeDirection.Backward, inclusiveStartPrimaryKey, exclusiveEndPrimaryKey);
  • 読み取る属性列の指定。

    HashSet<string> columnsToGet = new HashSet<string> { "col2" };
    
    // GetRange メソッドを呼び出して行を読み取ります。
    GetRangeRequest getRangeRequest = new GetRangeRequest("test_table", GetRangeDirection.Forward, inclusiveStartPrimaryKey, exclusiveEndPrimaryKey, columnsToGet, null);
  • 返される行の最大数の設定。

    int limit = 10;
    
    // GetRange メソッドを呼び出して行を読み取ります。
    GetRangeRequest getRangeRequest = new GetRangeRequest("test_table", GetRangeDirection.Forward, inclusiveStartPrimaryKey, exclusiveEndPrimaryKey, null, limit);

関連トピック