使用GetTimeseriesData接口,您可以查询符合指定条件的时序数据。

前提条件

  • 已写入时序数据。具体操作,请参见写入时序数据
  • 已初始化TimeseriesClient。具体操作,请参见初始化

参数

参数 说明
timeseriesKey 要查询的时间线,包括如下内容:
  • measurementName:时间线的度量名称。
  • dataSource:数据源信息,可以为空。
  • tags:时间线的标签信息,为多个字符串的key-value对。
timeRange 要查询的时间范围,包括如下内容:
  • beginTimeInUs:起始时间。
  • endTimeInUs:结束时间。
backward 是否按照时间倒序读取数据,可用于获取某条时间线的最新数据。取值范围如下:
  • true:按照时间倒序读取。
  • false(默认):按照时间正序读取。
fieldsToGet 要获取的数据列列名。如果不指定,则默认获取所有列。
注意 fieldsToGet中需要指定要获取的每一列的列名和类型。如果类型不匹配,则读取不到对应列的数据。
limit 本次最多返回的行数。
说明 limit仅限制最多返回的行数,在满足条件行数大于limit时,也可能由于扫描数据量等限制导致返回行数少于limit条,此时可以通过nextToken继续获取后面的行。
nextToken 如果一次查询仅返回了部分符合条件的行,此时response中会包括nextToken,可在下一次请求中指定nextToken用来继续读取数据。

示例

查询test_timeseries_table时序表中满足指定条件的时序数据。

private static void getTimeseriesData(TimeseriesClient client) {
    String tableName = "test_timeseries_table";
    GetTimeseriesDataRequest getTimeseriesDataRequest = new GetTimeseriesDataRequest(tableName);
    Map<String, String> tags = new HashMap<String, String>();
    tags.put("region", "hangzhou");
    tags.put("os", "Ubuntu16.04");
    // 通过measurementName、dataSource和tags构建TimeseriesKey。
    TimeseriesKey timeseriesKey = new TimeseriesKey("cpu", "host_0", tags);
    getTimeseriesDataRequest.setTimeseriesKey(timeseriesKey);
    // 指定时间范围。
    getTimeseriesDataRequest.setTimeRange(0, (System.currentTimeMillis() + 60 * 1000) * 1000);
    // 限制返回行数。
    getTimeseriesDataRequest.setLimit(10);
    // 设置是否倒序读取数据,可不设置,默认值为false。如果设置为true,则倒序读取数据。
    getTimeseriesDataRequest.setBackward(false);
    // 设置获取部分数据列,可不设置,默认获取全部数据列。
    getTimeseriesDataRequest.addFieldToGet("string_1", ColumnType.STRING);
    getTimeseriesDataRequest.addFieldToGet("long_1", ColumnType.INTEGER);

    GetTimeseriesDataResponse getTimeseriesDataResponse = client.getTimeseriesData(getTimeseriesDataRequest);
    System.out.println(getTimeseriesDataResponse.getRows().size());
    if (getTimeseriesDataResponse.getNextToken() != null) {
        // 如果nextToken不为空,可以发起下一次请求。
        getTimeseriesDataRequest.setNextToken(getTimeseriesDataResponse.getNextToken());
        getTimeseriesDataResponse = client.getTimeseriesData(getTimeseriesDataRequest);
        System.out.println(getTimeseriesDataResponse.getRows().size());
    }
}