Python SDK を使用して、指定されたプライマリキー範囲内のデータを Tablestore データテーブルから読み取ります。
前提条件
メソッド
def get_range(self, table_name, direction,
inclusive_start_primary_key,
exclusive_end_primary_key,
columns_to_get=None,
limit=None,
column_filter=None,
max_version=1,
time_range=None,
start_column=None,
end_column=None,
token=None,
transaction_id=None):
例
次の例は、プライマリキー値が row1 より大きい test_table テーブルからすべての行を読み取ります。
try:
# クエリの開始プライマリキーを設定します。
inclusive_start_primary_key = [('id', 'row1')]
# クエリの終了プライマリキーを設定します。終了プライマリキーは排他的です。
exclusive_end_primary_key = [('id', INF_MAX)]
# get_range メソッドを呼び出してデータをクエリします。
consumed, next_start_primary_key, row_list, next_token = client.get_range('test_table', Direction.FORWARD,
inclusive_start_primary_key, exclusive_end_primary_key)
# 結果を処理します。
print('* Read CU Cost: %s' % consumed.read)
print('* Write CU Cost: %s' % consumed.write)
print('* Rows Data:')
for row in row_list:
print(row.primary_key, row.attribute_columns)
except Exception as e:
print("Range get failed with error: %s" % e)
単一の範囲スキャンは、最大 5,000 行または 4 MB のデータを返すことができます。結果セットがこの制限を超えると、応答には次のバッチを取得するためのトークン (next_start_primary_key) が含まれます。このトークンを使用して、次の例に示すように結果を反復処理します。
while True:
# get_range メソッドを呼び出してデータをクエリします。
consumed, next_start_primary_key, row_list, next_token = client.get_range('test_table', Direction.FORWARD,
inclusive_start_primary_key,
exclusive_end_primary_key)
# 結果を処理します。
print('* Read CU Cost: %s' % consumed.read)
print('* Write CU Cost: %s' % consumed.write)
print('* Rows Count: %s' % len(row_list))
print('* Rows Data:')
for row in row_list:
print(row.primary_key, row.attribute_columns)
# 次の読み取りの開始プライマリキーを設定します。
if next_start_primary_key:
inclusive_start_primary_key = next_start_primary_key
else:
break
次のオプションを使用してクエリをカスタマイズします。
-
バージョン範囲を設定して、その範囲内のデータのみを返します。
# クエリのバージョン範囲を過去 24 時間に設定します。 time_range = (int(time.time() * 1000 - 86400 * 1000), int(time.time() * 1000)) consumed, next_start_primary_key, row_list, next_token = client.get_range('test_table', Direction.FORWARD, inclusive_start_primary_key, exclusive_end_primary_key, time_range= time_range) -
読み取る属性列を指定します。
columns_to_get = ['col1'] # get_range メソッドを呼び出してデータをクエリします。 consumed, next_start_primary_key, row_list, next_token = client.get_range('test_table', Direction.FORWARD, inclusive_start_primary_key, exclusive_end_primary_key, columns_to_get) -
単一のリクエストで返す最大行数を設定します。
limit = 10 # get_range メソッドを呼び出してデータをクエリします。 consumed, next_start_primary_key, row_list, next_token = client.get_range('test_table', Direction.FORWARD, inclusive_start_primary_key, exclusive_end_primary_key, limit=limit)