查詢時序資料
更新時間:
Copy as MD
通過 Tablestore SDK for Java 從時序表中查詢符合指定條件的時序資料。
前提條件
已初始化用戶端。詳情請參見初始化Tablestore Client。
方法說明
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()); }); }
常見問題
该文章对您有帮助吗?