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
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) |
|
Nama tabel deret waktu. |
|
timeseriesKey (wajib) |
|
Pengenal lengkap dari deret waktu yang akan dikueri. Nilainya harus sama dengan yang digunakan saat menulis data. |
|
beginTimeInUs (wajib) |
|
Waktu mulai rentang kueri, dalam mikrodetik sejak 1970-01-01 00:00:00 UTC. Nilainya harus lebih besar dari atau sama dengan |
|
endTimeInUs (wajib) |
|
Waktu akhir rentang kueri, dalam mikrodetik. Nilainya harus lebih besar dari |
|
limit (opsional) |
|
Jumlah maksimum baris yang dikembalikan dalam satu permintaan. Nilai default dan maksimum: |
|
nextToken (opsional) |
|
Token paginasi. Jangan tentukan parameter ini pada permintaan pertama. Jika |
|
backward (opsional) |
|
Menentukan apakah data dikembalikan dalam urutan kronologis terbalik. Default: |
|
fieldsToGet (opsional) |
|
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) |
|
Nama ukuran. Jika nilai kosong digunakan saat menulis data, gunakan nilai kosong dalam kueri. |
|
dataSource (opsional) |
|
Pengenal sumber data. Jika nilai kosong digunakan saat menulis data, gunakan nilai kosong dalam kueri. |
|
tags (opsional) |
|
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 |
|
|
|
Panggil |
|
|
|
Panggil |
Baris data deret waktu
Setiap elemen dalam rows[] bertipe TimeseriesRow dan berisi bidang berikut.
|
Bidang |
Tipe |
Deskripsi |
|
|
|
Panggil |
|
|
|
Panggil |
|
|
|
Panggil |
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);