All Products
Search
Document Center

Tablestore:Membaca data dalam rentang

Last Updated:Mar 31, 2026

Gunakan Python SDK untuk membaca data dalam rentang kunci primer tertentu dari tabel data Tablestore.

Prasyarat

Inisialisasi client Tablestore

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):

Parameter

Parameter

Tipe

Deskripsi

table_name (Wajib)

str

Nama tabel data.

inclusive_start_primary_key (Wajib)

List[Tuple]

Kunci primer awal dari rentang. Kunci ini mencakup nama dan nilai kolom kunci primer.

  • Hasil menyertakan baris yang sesuai dengan kunci primer awal.

  • Jumlah dan tipe data kolom kunci primer harus sesuai dengan skema tabel.

  • Untuk pembacaan maju, kunci primer awal harus lebih kecil daripada kunci primer akhir.

  • Untuk pembacaan mundur, kunci primer awal harus lebih besar daripada kunci primer akhir.

  • INF_MIN merepresentasikan tak hingga negatif, dan INF_MAX merepresentasikan tak hingga positif.

exclusive_end_primary_key (Wajib)

List[Tuple]

Kunci primer akhir dari rentang. Kunci ini mencakup nama dan nilai kolom kunci primer.

  • Hasil tidak menyertakan baris yang sesuai dengan kunci primer akhir.

  • Jumlah dan tipe data kolom kunci primer harus sesuai dengan skema tabel.

  • INF_MIN merepresentasikan tak hingga negatif, dan INF_MAX merepresentasikan tak hingga positif.

direction (Wajib)

Direction

Arah pembacaan.

  • FORWARD: Nilai default. Melakukan pembacaan maju, yaitu membaca data dalam urutan menaik berdasarkan nilai kunci primer.

  • BACKWARD: Melakukan pembacaan mundur, yaitu membaca data dalam urutan menurun berdasarkan nilai kunci primer.

max_version (Opsional)

int

Jumlah maksimum versi yang dikembalikan untuk setiap kolom. Nilai default adalah 1.

  • Anda harus menentukan salah satu dari max_version atau time_range.

  • Jika jumlah versi data yang cocok melebihi jumlah maksimum versi, Tablestore mengembalikan versi terbaru hingga batas tersebut.

time_range (Opsional)

Tuple

Rentang versi data.

  • Anda harus menentukan salah satu dari max_version atau time_range.

  • Setiap kolom atribut dalam tabel Tablestore dapat memiliki beberapa versi. Jika Anda menentukan rentang waktu, hanya data dalam rentang tersebut yang dikembalikan.

limit (Opsional)

int

Jumlah maksimum baris yang dikembalikan dalam satu permintaan. Nilai ini harus lebih besar dari 0. Jika jumlah baris yang cocok melebihi batas ini, respons akan menyertakan jumlah baris yang ditentukan dan kunci primer awal untuk permintaan berikutnya.

columns_to_get (Opsional)

List[str]

Kolom data yang akan dibaca. Tentukan kolom kunci primer atau kolom atribut.

  • Jika Anda menghilangkan parameter ini, metode ini mengembalikan seluruh baris.

  • Jika baris yang dikembalikan tidak berisi salah satu kolom data yang ditentukan, baris tersebut tetap dikembalikan, tetapi daftar kolom atributnya kosong.

column_filter (Opsional)

ColumnCondition

Kondisi filter. Untuk informasi selengkapnya, lihat Filter.

  • Jika Anda menentukan columns_to_get dan column_filter, sistem terlebih dahulu mengambil kolom yang ditentukan dalam columns_to_get, lalu menerapkan column_filter pada hasilnya.

transaction_id (Opsional)

str

ID transaksi lokal. ID ini secara unik mengidentifikasi transaksi lokal. Untuk informasi selengkapnya, lihat Transaksi lokal.

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)

Referensi

Batch read data