Kueri data deret waktu yang memenuhi kondisi tertentu dari tabel deret waktu menggunakan Tablestore SDK untuk Java.
Prasyarat
Client telah diinisialisasi. Untuk informasi selengkapnya, lihat Initialize a Tablestore client.
Metode
public GetTimeseriesDataResponse getTimeseriesData(GetTimeseriesDataRequest request) throws TableStoreException, ClientException
Kode contoh
Contoh berikut melakukan kueri data deret waktu dari 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-nya 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);
// Lakukan 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());
});
}
Anda juga dapat mengonfigurasi pengaturan opsional berikut:
-
Tentukan jumlah maksimum baris per permintaan
getTimeseriesDataRequest.setLimit(20); -
Baca data dalam urutan kronologis terbalik
// Baca data dalam urutan kronologis terbalik untuk mendapatkan data terbaru dari deret waktu. getTimeseriesDataRequest.setBackward(true); -
Tentukan kolom data yang akan dikembalikan
getTimeseriesDataRequest.addFieldToGet("col_string", ColumnType.STRING); getTimeseriesDataRequest.addFieldToGet("col_long", ColumnType.INTEGER); getTimeseriesDataRequest.addFieldToGet("col_double", ColumnType.DOUBLE); -
Lakukan paginasi hasil menggunakan parameter
nextToken// Jika nextToken tidak null, masih ada data yang tersedia. if (getTimeseriesDataResponse.getNextToken() != null) { // Ambil nilai nextToken. byte[] nextToken = getTimeseriesDataResponse.getNextToken(); /* // Untuk menyimpan atau mentransfer nextToken, encode sebagai string Base64. String tokenAsString = Base64.toBase64String(nextToken); // Decode string kembali ke byte[]. byte[] tokenAsByte = Base64.fromBase64String(tokenAsString); */ // Teruskan nextToken untuk mengambil halaman berikutnya. getTimeseriesDataRequest.setNextToken(nextToken); // Lakukan 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()); }); }