Tablestore PHP SDK を使用して、指定されたプライマリキーの範囲内の行を読み取ります。
前提条件
メソッド
public function getRange(array $request)例
次の例では、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;