本文介绍如何通过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()); }); }
常见问题
该文章对您有帮助吗?