Gunakan Python SDK untuk membaca data dalam rentang kunci primer tertentu dari tabel data Tablestore.
Prasyarat
Metode
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):
Contoh
Contoh berikut membaca semua baris dari tabel test_table dengan nilai kunci primer lebih besar dari row1.
try:
# Setel kunci primer awal untuk kueri.
inclusive_start_primary_key = [('id', 'row1')]
# Setel kunci primer akhir untuk kueri. Kunci primer akhir bersifat eksklusif.
exclusive_end_primary_key = [('id', INF_MAX)]
# Panggil metode get_range untuk mengkueri data.
consumed, next_start_primary_key, row_list, next_token = client.get_range('test_table', Direction.FORWARD,
inclusive_start_primary_key, exclusive_end_primary_key)
# Proses hasilnya.
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)
Satu kali pemindaian rentang dapat mengembalikan maksimal 5.000 baris atau 4 MB data. Jika set hasil melebihi batas ini, respons akan menyertakan token (next_start_primary_key) untuk mengambil batch berikutnya. Gunakan token tersebut untuk melakukan iterasi melalui hasil, seperti yang ditunjukkan pada contoh berikut.
while True:
# Panggil metode get_range untuk mengkueri data.
consumed, next_start_primary_key, row_list, next_token = client.get_range('test_table', Direction.FORWARD,
inclusive_start_primary_key,
exclusive_end_primary_key)
# Proses hasilnya.
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)
# Setel kunci primer awal untuk pembacaan berikutnya.
if next_start_primary_key:
inclusive_start_primary_key = next_start_primary_key
else:
break
Kustomisasi kueri dengan opsi berikut:
-
Tentukan rentang versi untuk hanya mengembalikan data dalam rentang tersebut.
# Tentukan rentang versi untuk kueri sebagai 24 jam terakhir. 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) -
Tentukan kolom atribut yang akan dibaca.
columns_to_get = ['col1'] # Panggil metode get_range untuk mengkueri data. 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) -
Tentukan jumlah maksimum baris yang dikembalikan dalam satu permintaan.
limit = 10 # Panggil metode get_range untuk mengkueri data. 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)