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

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

最終更新日:Mar 10, 2026

Tablestore PHP SDK を使用して、指定されたプライマリキーの範囲内の行を読み取ります。

前提条件

Tablestore クライアントの初期化

メソッド

public function getRange(array $request)

次の表に、$request パラメーターを示します。

名前

説明

table_name (必須)

string

データテーブルの名前。

inclusive_start_primary_key (必須)

array

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

  • レスポンスには開始プライマリキーが含まれます。

  • プライマリキーの数と型は、データテーブルのものと一致している必要があります。

  • 順方向の読み取りの場合、開始プライマリキーは終了プライマリキーより小さくする必要があります。

  • 逆方向の読み取りの場合、開始プライマリキーは終了プライマリキーより大きくする必要があります。

  • `PrimaryKeyTypeConst::CONST_INF_MIN` は負の無限大を意味します。`PrimaryKeyTypeConst::CONST_INF_MAX` は正の無限大を意味します。

exclusive_end_primary_key (必須)

array

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

  • レスポンスには終了プライマリキーは含まれません。

  • プライマリキーの数と型は、データテーブルのものと一致している必要があります。

  • `PrimaryKeyTypeConst::CONST_INF_MIN` は負の無限大を意味します。`PrimaryKeyTypeConst::CONST_INF_MAX` は正の無限大を意味します。

direction (必須)

string

読み取り方向。

  • `DirectionConst::CONST_FORWARD`: 順方向の読み取り。

  • `DirectionConst::CONST_BACKWARD`: 逆方向の読み取り。

max_versions (任意)

int

最大バージョン数。

  • `max_versions` または `time_range` のいずれかを設定します。

  • 一致するバージョン数が `max_versions` を超える場合、レスポンスは `max_versions` までの最新バージョンを返します。

time_range (任意)

array

バージョン範囲。

  • `max_versions` または `time_range` のいずれかを設定します。

  • Tablestore データテーブルの各属性列は、異なるバージョンを持つことができます。`time_range` を設定すると、その範囲内のデータのみが返されます。

limit (任意)

int

リクエストごとに返す最大行数。0 より大きい必要があります。クエリに一致する行がさらにある場合、レスポンスは指定された行数と次のリクエストのための開始プライマリキーを返します。

columns_to_get (任意)

array

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

  • 設定しない場合、レスポンスは完全な行を返します。

  • 設定されていて、行に指定された列が 1 つも含まれていない場合、レスポンスはその行に対して null を返します。

column_filter (任意)

array

フィルター条件。詳細については、「フィルター」をご参照ください。

  • `columns_to_get` と `column_filter` の両方が設定されている場合、Tablestore は最初に `columns_to_get` を適用し、次に `column_filter` を適用します。

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

$request = array (
    'table_name' => 'test_table',
    // 開始プライマリキーを設定
    'inclusive_start_primary_key' => array (
        array('id', 'row1')
    ),
    // 終了プライマリキーを設定 (レスポンスにはこのキーは含まれません)
    'exclusive_end_primary_key'  => array (
        array('id', null, PrimaryKeyTypeConst::CONST_INF_MAX)
    ),
    // 順方向の読み取りを設定
    'direction' => DirectionConst::CONST_FORWARD,
    // 読み取るバージョン数を設定
    'max_versions' => 1
);

try {
    // getRange を呼び出して行を読み取り
    $response = $client->getRange ($request);

    // レスポンスを処理
    echo "* 読み取り CU コスト: " . $response['consumed']['capacity_unit']['read'] . "\n";
    echo "* 書き込み CU コスト: " . $response['consumed']['capacity_unit']['write'] . "\n";
    echo "* 行データ: " . "\n";
    foreach ($response['rows'] as $row) {
        echo json_encode($row) . "\n";
    }
} catch (Exception $e){
    echo "範囲の取得に失敗しました。";
}

1 回の範囲スキャンでは、最大 5,000 行または 4 MB のデータが返されます。結果がこれらの上限を超える場合、レスポンスには次のリクエストのための開始プライマリキーが含まれます。次のコードを使用して、反復クエリを実行します。

while (true) {
    // getRange を呼び出して行を読み取り
    $response = $client->getRange ($request);
    // レスポンスを処理
    echo "* 読み取り CU コスト: " . $response['consumed']['capacity_unit']['read'] . "\n";
    echo "* 書き込み CU コスト: " . $response['consumed']['capacity_unit']['write'] . "\n";
    echo "* 行データ: " . "\n";
    foreach ($response['rows'] as $row) {
        echo json_encode($row) . "\n";
    }
    
    if ($response['next_start_primary_key'] != null){
        $request['inclusive_start_primary_key'] = $response['next_start_primary_key'];
    } else {
        break;
    }
}

必要に応じて、次のオプション設定を構成します。

  • 読み取り方向を逆方向に設定します。

    $request = array (
        'table_name' => 'test_table',
        // 開始プライマリキーを設定 (逆方向の読み取りの場合、開始キーは終了キーより大きくする必要があります)
        'inclusive_start_primary_key' => array (
            array('id', null, PrimaryKeyTypeConst::CONST_INF_MAX)
        ),
        // 終了プライマリキーを設定 (レスポンスにはこのキーは含まれません)
        'exclusive_end_primary_key'  => array (
            array('id', 'row1')
        ),
        // 逆方向の読み取りを設定
        'direction' => DirectionConst::CONST_BACKWARD,
        // 読み取るバージョン数を設定
        'max_versions' => 1
    );
  • バージョン範囲を設定します。指定された範囲内のデータのみが返されます。

    // バージョン範囲を現在時刻の 1 日前に設定
    $request['time_range'] = array (
        'start_time' => intval(microtime(true) * 1000) - 86400 * 1000,
        'end_time' => intval(microtime(true) * 1000)
    );
  • 読み取る属性列を指定します。

    $request['columns_to_get'] = array('col2');
  • リクエストごとに返す最大行数を設定します。

    $request['limit'] = 10;

関連資料

データのバッチ読み取り