表格存儲提供了GetTimeseriesData接口用于查詢某一時間線在指定時間段時序數據。查詢時序數據時,如果不確定要查詢時間線信息(例如度量名稱、數據源信息),您可以先根據指定條件檢索到時間線后再進行查詢。
功能概述
調用GetTimeseriesData接口查詢指定時間線中符合條件的時序數據。
查詢時序數據時,您必須指定要查詢時間線信息以及根據需要配置查詢條件。
配置是否按照時間倒序讀取數據,可用于獲取某條時間線的最新數據。
系統默認會返回所有數據列,您可以配置獲取指定數據列。
配置一次最多返回的行數。
使用方式
您可以使用控制臺、命令行工具或者SDK進行時序數據查詢操作。
通過不同使用方式進行操作時支持的功能存在差異,請以實際為準。
查詢時序數據前,您需要完成如下準備工作。
已完成確定要查詢的時間線標識信息。如果不確定時間線標識信息,請通過檢索時間線獲取。具體操作,請參見管理時間線元數據。
使用SDK方式進行操作時,還需要完成初始化Client。具體操作,請參見初始化OTSClient。
使用命令行工具方式進行操作前,還需要完成下載并啟動命令行工具,然后配置接入實例信息。具體操作,請參見下載命令行工具和啟動并配置接入實例。
使用控制臺
您可以使用控制臺查詢某一時間線在指定時間范圍內的數據。
進入實例管理頁面。
登錄表格存儲控制臺。
在頁面上方,選擇資源組和地域。
在概覽頁面,單擊實例名稱或者單擊實例操作的實例管理。
在實例詳情頁簽,單擊時序表列表頁簽。
在時序表列表頁簽,單擊時序表名稱后選擇數據管理頁簽或在時序表操作列單擊數據管理。
在數據管理頁簽,在目標時間線的操作列單擊查詢數據。
選擇時間范圍或者微秒時間戳的查詢方式并設置時間,單擊查詢。
符合查詢條件的數據會顯示在數據管理頁簽,查詢結果支持按列表或者圖的方式展示。
按列表展示數據
按圖形展示數據
說明圖中不同顏色代表不同的數據列,將鼠標移動到數據趨勢線上將顯示該時間節點上不同數據列的值。您還可以通過取消選中或者選中指定數據列來展示所需數據列。
使用命令行工具
您可以使用命令行工具查詢某一時間線在指定時間范圍內的數據。
執行getts
命令查詢某一個時間線中指定范圍內的時序數據。更多信息,請參見查詢時序數據。
以下示例用于查詢度量名稱為cpu,數據源標識為localhost,且標簽為"region=hangzhou"
和"os=ubuntu"
的時間線中1667638230000000之前產生的最多100條時序數據。
getts --k '["cpu","localhost",["region=hangzhou","os=ubuntu"]]' --time_start 0 --time_end 1667638230000000 --limit 100
使用SDK
您可以使用Java SDK和Go 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。
如果要低成本存儲時序數據以及快速查詢和分析時序數據,您可以使用時序分析存儲實現。更多信息,請參見時序分析存儲概述。