全部產品
Search
文件中心

Tablestore:查詢時序資料

更新時間:Nov 21, 2024

Table Store提供時序資料查詢功能用於查詢某一時間軸在指定時間段的時序資料。查詢時序資料時,如果不確定要查詢的時間軸資訊(例如度量名稱、資料來源資訊),您可以先根據指定條件檢索到時間軸後再進行查詢。

功能概述

調用GetTimeseriesData介面查詢指定時間軸中合格時序資料。

查詢時序資料時,您必須指定要查詢的時間軸資訊以及根據需要配置查詢條件。

  • 配置是否按照時間倒序讀取資料,可用於擷取某條時間軸的最新資料。

  • 配置只擷取指定資料列,預設返回所有資料列。

  • 配置一次最多返回的行數。

查詢方式

您可以使用控制台、命令列工具或者SDK進行時序資料查詢操作。

說明

通過不同使用方式進行操作時支援的功能存在差異,請以實際為準。

查詢時序資料前,您需要確定要查詢的時間軸標識資訊。

使用控制台

您可以使用控制台查詢某一時間軸在指定時間範圍內的資料。

  1. 進入執行個體管理頁面。

    1. 登入Table Store控制台

    2. 在頁面上方,選擇資源群組和地區。

    3. 概覽頁面,單擊執行個體名稱或單擊執行個體名稱右側的執行個體管理

  2. 執行個體詳情頁簽,單擊時序表列表頁簽。

  3. 時序表列表頁簽,單擊目標時序表操作列的資料管理

  4. 資料管理頁簽,在目標時間軸的操作列單擊查詢資料

  5. 設定查詢條件。

    1. 查詢結果預設按照時間從小到大排序。如需按照時間倒序讀取資料,請選擇倒序查詢

    2. 選取查詢方式並設定時間。

  6. 單擊查詢

    符合查詢條件的資料會顯示在資料管理頁簽,查詢結果支援按列表或者圖的方式展示。

    按列表展示資料

    image

    按圖形展示資料

    image

使用命令列工具

您可以使用命令列工具查詢某一時間軸在指定時間範圍內的資料。

執行getts命令查詢某一個時間軸中指定範圍內的時序資料。更多資訊,請參見查詢時序資料

以下樣本用於查詢度量名稱為cpu,資料來源標識為localhost,且標籤為"region=hangzhou""os=ubuntu"的時間軸中時間戳記在0到1667638230000000之間的最多前100條時序資料。返回結果按照時間戳記升序排列。

getts --k '["cpu","localhost",["region=hangzhou","os=ubuntu"]]' --time_start 0 --time_end 1667638230000000 --limit 100

使用SDK

您可以使用Java SDKGo SDK查詢某一時間軸在指定時間範圍內的資料。此處以Java SDK為例介紹時序資料查詢功能的使用。

以下樣本用於查詢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());
    }
}

常見問題

相關文檔

  • 您還可以使用SQL查詢時序資料。更多資訊,請參見使用SQL查詢時序資料

  • 如果要可視化展示時序資料,您可以通過對接Grafana實現。更多資訊,請參見對接Grafana