Topik ini menjelaskan cara mengkueri data deret waktu yang memenuhi kondisi tertentu dalam tabel deret waktu menggunakan Tablestore SDK for Java.
Prasyarat
Klien harus sudah diinisialisasi. Untuk informasi lebih lanjut, lihat Inisialisasi Klien Tablestore.
Metode
public GetTimeseriesDataResponse getTimeseriesData(GetTimeseriesDataRequest request) throws TableStoreException, ClientExceptionKode contoh
Kode contoh berikut memberikan contoh tentang cara mengkueri data deret waktu yang memenuhi kondisi tertentu dalam tabel deret waktu bernama timeseries_table_sample:
private static void getTimeseriesData(TimeseriesClient client) {
String tableName = "timeseries_table_sample";
GetTimeseriesDataRequest getTimeseriesDataRequest = new GetTimeseriesDataRequest(tableName);
// Tentukan pengenal deret waktu. Dalam contoh ini, nama metrik adalah cpu, sumber data adalah host_0, dan tag adalah "region=hangzhou" dan "os=Ubuntu16.04".
Map<String, String> tags = new HashMap<String, String>();
tags.put("region", "hangzhou");
tags.put("os", "Ubuntu16.04");
TimeseriesKey timeseriesKey = new TimeseriesKey("cpu", "host_0", tags);
getTimeseriesDataRequest.setTimeseriesKey(timeseriesKey);
// Tentukan rentang waktu.
getTimeseriesDataRequest.setTimeRange(0, (System.currentTimeMillis() + 60 * 1000) * 1000);
getTimeseriesDataRequest.setLimit(20);
// Kueri data deret waktu.
GetTimeseriesDataResponse getTimeseriesDataResponse = client.getTimeseriesData(getTimeseriesDataRequest);
// Cetak hasil kueri.
getTimeseriesDataResponse.getRows().forEach(row -> {
System.out.println("TimeseriesKey: " + row.getTimeseriesKey() + "; TimeInUs: " + row.getTimeInUs() + "; Fields: " + row.getFields());
});
}Saat mengkueri data deret waktu, Anda juga dapat merujuk pada kode contoh berikut untuk mengonfigurasi pengaturan tertentu:
Tentukan jumlah maksimum baris yang dikembalikan dalam satu permintaan
getTimeseriesDataRequest.setLimit(20);Tentukan bahwa data dibaca dalam urutan kronologis terbalik
// Baca data dalam urutan kronologis terbalik untuk mendapatkan data terbaru dari deret waktu. getTimeseriesDataRequest.setBackward(true);Tentukan kolom data yang ingin Anda kembalikan
getTimeseriesDataRequest.addFieldToGet("col_string", ColumnType.STRING); getTimeseriesDataRequest.addFieldToGet("col_long", ColumnType.INTEGER); getTimeseriesDataRequest.addFieldToGet("col_double", ColumnType.DOUBLE);Lakukan kueri halaman menggunakan parameter
nextToken// Jika nilai parameter nextToken tidak kosong, Anda dapat memulai permintaan berikutnya. if (getTimeseriesDataResponse.getNextToken() != null) { // Dapatkan nilai parameter nextToken. byte[] nextToken = getTimeseriesDataResponse.getNextToken(); /* // Jika Anda ingin menyimpan parameter nextToken atau mentransfer parameter nextToken ke halaman frontend, Anda dapat menggunakan Base64 untuk mengkodekan parameter nextToken menjadi string untuk penyimpanan dan transmisi. String tokenAsString = Base64.toBase64String(nextToken); // Dekode string kembali ke tipe byte[] nextToken. byte[] tokenAsByte = Base64.fromBase64String(tokenAsString); */ // Tentukan nilai parameter nextToken. getTimeseriesDataRequest.setNextToken(nextToken); // Kueri data deret waktu. getTimeseriesDataResponse = client.getTimeseriesData(getTimeseriesDataRequest); // Cetak hasil kueri. getTimeseriesDataResponse.getRows().forEach(row -> { System.out.println("TimeseriesKey: " + row.getTimeseriesKey() + "; TimeInUs: " + row.getTimeInUs() + "; Fields: " + row.getFields()); }); }