本文介紹如何通過Java SDK查詢時序表中符合指定條件的時序資料。
前提條件
方法說明
public GetTimeseriesDataResponse getTimeseriesData(GetTimeseriesDataRequest request) throws TableStoreException, ClientException
範例程式碼
以下範例程式碼查詢timeseries_table_sample時序表中合格時序資料。
private static void getTimeseriesData(TimeseriesClient client) {
String tableName = "timeseries_table_sample";
GetTimeseriesDataRequest getTimeseriesDataRequest = new GetTimeseriesDataRequest(tableName);
// 指定時間軸標識。度量名稱為cpu,資料來源標識為host_0,且標籤為"region=hangzhou"和"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);
// 指定時間範圍。
getTimeseriesDataRequest.setTimeRange(0, (System.currentTimeMillis() + 60 * 1000) * 1000);
getTimeseriesDataRequest.setLimit(20);
// 查詢時序資料。
GetTimeseriesDataResponse getTimeseriesDataResponse = client.getTimeseriesData(getTimeseriesDataRequest);
// 列印查詢結果。
getTimeseriesDataResponse.getRows().forEach(row -> {
System.out.println("TimeseriesKey: " + row.getTimeseriesKey() + "; TimeInUs: " + row.getTimeInUs() + "; Fields: " + row.getFields());
});
}
您也可以在查詢時序資料的同時參考範例程式碼進行以下設定。
設定單次請求的最大返回行數
getTimeseriesDataRequest.setLimit(20);
設定按倒序進行排序
// 按照時間倒序讀取資料,以便擷取某條時間軸的最新資料。 getTimeseriesDataRequest.setBackward(true);
指定返回結果中要擷取的部分資料列
getTimeseriesDataRequest.addFieldToGet("col_string", ColumnType.STRING); getTimeseriesDataRequest.addFieldToGet("col_long", ColumnType.INTEGER); getTimeseriesDataRequest.addFieldToGet("col_double", ColumnType.DOUBLE);
通過
nextToken
進行翻頁查詢// 如果nextToken不為空白,可以發起下一次請求。 if (getTimeseriesDataResponse.getNextToken() != null) { // 擷取nextToken。 byte[] nextToken = getTimeseriesDataResponse.getNextToken(); /* // 如果需要持久化nextToken或者傳輸nextToken給前端頁面,您可以使用Base64編碼將nextToken編碼為String進行儲存和傳輸。 String tokenAsString = Base64.toBase64String(nextToken); // 將String重新解碼為byte類型的nextToken。 byte[] tokenAsByte = Base64.fromBase64String(tokenAsString); */ // 指定nextToken。 getTimeseriesDataRequest.setNextToken(nextToken); // 查詢時序資料。 getTimeseriesDataResponse = client.getTimeseriesData(getTimeseriesDataRequest); // 列印查詢結果。 getTimeseriesDataResponse.getRows().forEach(row -> { System.out.println("TimeseriesKey: " + row.getTimeseriesKey() + "; TimeInUs: " + row.getTimeInUs() + "; Fields: " + row.getFields()); }); }