全部產品
Search
文件中心

Tablestore:查詢時序資料

更新時間:Nov 05, 2024

使用GetTimeseriesData介面,您可以查詢符合指定條件的時序資料。

前提條件

參數

參數

說明

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());
    }
}

常見問題