All Products
Search
Document Center

Tablestore:Kueri data deret waktu

Last Updated:Aug 04, 2026

Gunakan Tablestore SDK for Java untuk mengkueri data dalam rentang waktu tertentu dari suatu deret waktu, mengurutkan data berdasarkan waktu, memilih bidang yang akan dikembalikan, serta melakukan paginasi terhadap hasilnya.

Prasyarat

Pasang Tablestore SDK for Java dan inisialisasi klien deret waktu.

Deskripsi

Panggil getTimeseriesData untuk mengkueri titik data dari satu deret waktu dengan menentukan pengenal deret waktu lengkap dan rentang waktu. Rentang waktu mencakup waktu mulai dan tidak mencakup waktu akhir.

public GetTimeseriesDataResponse getTimeseriesData(GetTimeseriesDataRequest request) throws TableStoreException, ClientException
Catatan

Data yang ditulis melalui pemanggilan putTimeseriesData dapat langsung dikueri dengan memanggil getTimeseriesData.

Contoh berikut mengkueri data yang dihasilkan dalam satu jam terakhir dari deret waktu cpu pada example_timeseries_table dan mengembalikan hingga 20 baris dalam satu permintaan.

TimeseriesClient timeseriesClient = client.asTimeseriesClient();

Map<String, String> tags = new HashMap<>();
tags.put("region", "cn-hangzhou");
tags.put("host", "host_0");
TimeseriesKey timeseriesKey = new TimeseriesKey("cpu", "source_0", tags);

long endTimeInUs = System.currentTimeMillis() * 1000L;
long beginTimeInUs = endTimeInUs - 3600L * 1000L * 1000L;
GetTimeseriesDataRequest request =
        new GetTimeseriesDataRequest("example_timeseries_table");
request.setTimeseriesKey(timeseriesKey);
request.setTimeRange(beginTimeInUs, endTimeInUs);
request.setLimit(20);

GetTimeseriesDataResponse response = timeseriesClient.getTimeseriesData(request);
for (TimeseriesRow row : response.getRows()) {
    System.out.println(row.getTimeInUs());
    System.out.println(row.getFields());
}

Parameter

GetTimeseriesDataRequest berisi parameter berikut.

Nama

Tipe

Deskripsi

timeseriesTableName (wajib)

String

Nama tabel deret waktu.

timeseriesKey (wajib)

TimeseriesKey

Pengenal lengkap dari deret waktu yang akan dikueri. Nilainya harus sama dengan yang digunakan saat menulis data.

beginTimeInUs (wajib)

long

Waktu mulai rentang kueri, dalam mikrodetik sejak 1970-01-01 00:00:00 UTC. Nilainya harus lebih besar dari atau sama dengan 0. Rentang kueri mencakup waktu ini.

endTimeInUs (wajib)

long

Waktu akhir rentang kueri, dalam mikrodetik. Nilainya harus lebih besar dari 0. Rentang kueri tidak mencakup waktu ini.

limit (opsional)

int

Jumlah maksimum baris yang dikembalikan dalam satu permintaan. Nilai default dan maksimum: 5000. Jumlah baris aktual mungkin kurang dari nilai ini karena batasan jumlah data yang dipindai. Gunakan nextToken untuk mengambil sisa data.

nextToken (opsional)

byte[]

Token paginasi. Jangan tentukan parameter ini pada permintaan pertama. Jika nextToken dalam respons tidak kosong, teruskan ke permintaan berikutnya. Token ini berupa data biner. Untuk menyimpan atau mentransfernya, encode dalam Base64. Jangan mengonversinya dengan memanggil new String(nextToken).

backward (opsional)

boolean

Menentukan apakah data dikembalikan dalam urutan kronologis terbalik. Default: false, yang berarti data dikembalikan dalam urutan kronologis.

fieldsToGet (opsional)

List<Pair<String, ColumnType>>

Nama dan tipe bidang data yang akan dikembalikan. Jika parameter ini tidak ditentukan, semua bidang data akan dikembalikan. Bidang tidak dapat dibaca jika tipe data yang ditentukan berbeda dari tipe data aktual.

Pengenal deret waktu

timeseriesKey bertipe TimeseriesKey dan berisi parameter berikut.

Nama

Tipe

Deskripsi

measurementName (wajib)

String

Nama ukuran. Jika nilai kosong digunakan saat menulis data, gunakan nilai kosong dalam kueri.

dataSource (opsional)

String

Pengenal sumber data. Jika nilai kosong digunakan saat menulis data, gunakan nilai kosong dalam kueri.

tags (opsional)

SortedMap<String, String>

Tag dalam bentuk pasangan kunci-nilai string. Set tag harus sama dengan set yang digunakan saat menulis data.

Respons

GetTimeseriesDataResponse berisi bidang spesifik operasi berikut.

Bidang

Tipe

Deskripsi

rows

List<TimeseriesRow>

Panggil getRows() untuk mendapatkan baris yang dikembalikan oleh permintaan saat ini.

nextToken

byte[]

Panggil getNextToken() untuk mendapatkan token halaman berikutnya. Nilai null menunjukkan bahwa seluruh data dalam rentang kueri telah dikembalikan.

Baris data deret waktu

Setiap elemen dalam rows[] bertipe TimeseriesRow dan berisi bidang berikut.

Bidang

Tipe

Deskripsi

timeseriesKey

TimeseriesKey

Panggil getTimeseriesKey() untuk mendapatkan pengenal deret waktu.

timeInUs

long

Panggil getTimeInUs() untuk mendapatkan stempel waktu titik data dalam mikrodetik.

fields

SortedMap<String, ColumnValue>

Panggil getFields() untuk mendapatkan bidang data.

Contoh

Paginasi seluruh hasil

Jika suatu permintaan tidak mengembalikan seluruh data, ulangi permintaan dengan meneruskan nextToken dari respons sebelumnya hingga nilai yang dikembalikan adalah null.

byte[] nextToken = null;
do {
    request.setNextToken(nextToken);
    GetTimeseriesDataResponse response =
            timeseriesClient.getTimeseriesData(request);

    for (TimeseriesRow row : response.getRows()) {
        System.out.println(row.getTimeInUs());
        System.out.println(row.getFields());
    }
    nextToken = response.getNextToken();
} while (nextToken != null);