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

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

最終更新日:Mar 12, 2026

Node.js SDK の `getRange` メソッドを使用して、Tablestore テーブルからプライマリキーの範囲内のデータを読み取ります。

前提条件

Tablestore クライアントの初期化

メソッド

getRange: function getRange(params, callback)

パラメーター

名前

説明

tableName (必須)

string

データテーブルの名前。

inclusiveStartPrimaryKey (必須)

Array

開始プライマリキー。これには、プライマリキー列の名前と値が含まれます。

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

  • プライマリキーの数と型は、データテーブルのものと同じである必要があります。

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

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

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

exclusiveEndPrimaryKey (必須)

Array

プライマリキー列の名前と値を含む、プライマリキー情報を入力します。

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

  • プライマリキーの数と型は、データテーブルのものと同じである必要があります。

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

direction (任意)

string

読み取り方向。

  • `TableStore.Direction.FORWARD` (デフォルト): データを順方向で読み取ります。

  • `TableStore.Direction.BACKWARD`: データを逆方向で読み取ります。

maxVersions (任意)

number

返すバージョンの最大数。デフォルト値は 1 です。

  • フィルター条件を満たすデータバージョン数が指定された最大バージョン数を超えた場合、指定された数のバージョンがタイムスタンプの降順で返されます。

timeRange (任意)

object

データのバージョン範囲。

  • Tablestore データテーブルの各属性列は複数のバージョンを持つことができます。バージョン範囲を設定した場合、その範囲内のデータのみが返されます。

limit (任意)

number

1 回のリクエストで返す行の最大数。この値は 0 より大きい必要があります。フィルター条件を満たす行数がこの値より大きい場合、指定された最大行数と次のクエリの開始プライマリキーが返されます。

columnsToGet (任意)

Array

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

  • `columnsToGet` を設定しない場合、行全体のデータが返されます。

  • `columnsToGet` を設定した場合、取得した行データに指定された列が含まれていない場合、null が返されます。

columnFilter (任意)

TableStore.ColumnCondition

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

  • `columnsToGet` と `columnFilter` の両方を設定した場合、システムはまず `columnsToGet` に基づいて行を選択し、次に `columnFilter` に基づいてデータをフィルター処理します。

transactionId (任意)

string

ローカルトランザクション ID。この ID はローカルトランザクションを一意に識別します。詳細については、「ローカルトランザクション」をご参照ください。

使用例

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

var params = {
    tableName: 'test_table',
    // クエリの開始プライマリキーを設定します。
    inclusiveStartPrimaryKey: [{ 'id': 'row1' }],
    // クエリの終了プライマリキーを設定します。終了プライマリキーは結果に含まれません。
    exclusiveEndPrimaryKey: [{ 'id': TableStore.INF_MAX }]
};

// getRange メソッドを呼び出してデータをクエリします。
client.getRange(params, function (err, data) {
    if (err) {
        console.log('Get range failed with error: ', err);
        return;
    }

    console.log('* RequestId: ', data.RequestId);
    console.log('* Read CU Cost: ', data.consumed.capacityUnit.read);
    console.log('* Write CU Cost: ', data.consumed.capacityUnit.write);
    console.log('* Rows Data: ');
    data.rows.forEach(function (row) {
         console.log(row);
    });
});

1 回の範囲スキャンで返されるデータは、最大 5,000 行または 4 MB です。この制限を超えた場合、操作は次の読み取りのための開始プライマリキーを返します。次のコードを使用して、反復クエリを実行できます。

async function getRangeSample() {
    try {
        while (true) {
            // getRange メソッドを呼び出してデータをクエリします。
            const data = await client.getRange(params);

            // 返された結果を処理します。
            console.log('* RequestId: ', data.RequestId);
            console.log('* Read CU Cost: ', data.consumed.capacityUnit.read);
            console.log('* Write CU Cost: ', data.consumed.capacityUnit.write);
            console.log('* Rows Data: ');
            data.rows.forEach(function (row) {
                console.log(row);
            });

            // 次の読み取りの開始プライマリキーを設定します。
            if (data.nextStartPrimaryKey) {
                params.inclusiveStartPrimaryKey = data.nextStartPrimaryKey.map(item => {
                    return {
                        [item.name]: item.value
                    };
                });
            } else {
                break;
            }
        }
    } catch (err) {
        console.log('Range get failed with error: ', err);
    }
}

getRangeSample();

データをクエリする際に、次の設定も構成します。

  • データの読み取り方向を設定します。

    var params = {
        tableName: 'test_table',
        // クエリの開始プライマリキーを設定します。データを逆方向で読み取る場合、開始プライマリキーは終了プライマリキーよりも大きくする必要があります。
        inclusiveStartPrimaryKey: [{ 'id': TableStore.INF_MAX }],
        // クエリの終了プライマリキーを設定します。終了プライマリキーは結果に含まれません。
        exclusiveEndPrimaryKey: [{ 'id': 'row1' }],
        // 読み取り方向を逆方向に設定します。
        direction: TableStore.Direction.BACKWARD
    };
  • 読み取るデータのバージョン範囲を設定します。操作は、指定されたバージョン範囲内のデータのみを返します。

    // クエリのバージョン範囲を過去 24 時間に設定します。
    params.timeRange = {
        startTime: (Date.now() - 86400 * 1000).toString(),
        endTime: Date.now().toString()
    }
  • 読み取る属性列を指定します。

    params.columnsToGet = ['col2']
  • 1 回のリクエストで返す行の最大数を設定します。

    params.limit = 10

参考資料

データのバッチ読み取り