查詢時序資料
通過 Tablestore SDK for Java 從時序表中查詢符合指定條件的時序資料。
前提條件
已寫入時序資料。具體操作,請參見寫入時序資料。
已初始化 TimeseriesClient。具體操作,請參見初始化Tablestore Client。
參數
|
參數 |
是否必選 |
說明 |
|
timeseriesKey |
是 |
待查詢時間軸的標識資訊,包含以下子參數:
重要
如果不確定時間軸的標識資訊(例如度量名稱、資料來源資訊),可調用QueryTimeseriesMeta介面,通過多種條件檢索目標時間軸。更多資訊,請參見檢索時間軸。 |
|
timeRange |
是 |
查詢的時間範圍,為左閉右開區間,包含以下子參數:
|
|
backward |
否 |
是否按時間倒序返回資料,可用於擷取最新資料點。取值如下:
|
|
fieldsToGet |
否 |
要返回的資料列的列名。不指定時,預設返回所有列。 重要
指定 fieldsToGet 時,需同時提供每列的列名和資料類型。若資料類型不匹配,則該列資料無法讀取。 |
|
limit |
否 |
單次請求最多返回的行數。 說明
limit 僅限制單次返回的最大行數。若合格資料量超過 limit,或因掃描資料量限制導致實際返回行數少於 limit,可通過 nextToken 繼續讀取後續資料。 |
|
nextToken |
否 |
分頁令牌。若單次查詢僅返回部分結果,響應中會包含 nextToken,在下次請求中傳入該 token 可繼續讀取後續資料。 重要
如需持久化 nextToken 或將其傳輸至前端頁面,使用 Base 64 編碼將其轉換為字串後再儲存或傳輸。nextToken 本身不是字串類型,直接使用 |
樣本
以下樣本通過指定 timeseriesKey 查詢時序表中特定時間軸的資料。
func GetTimeseriesDataSample(client *tablestore.TimeseriesClient , timeseriesTableName string) {
fmt.Println("[Info]: Begin to get timeseries data !")
// 構造待查詢時間軸的 timeseriesKey。
timeseriesKey := tablestore.NewTimeseriesKey()
timeseriesKey.SetMeasurementName("NETWORK")
timeseriesKey.SetDataSource("127.0.0.1")
timeseriesKey.AddTag("City" , "Hangzhou")
timeseriesKey.AddTag("Region" , "Xihu")
// 構造查詢請求。
getTimeseriesDataRequest := tablestore.NewGetTimeseriesDataRequest(timeseriesTableName)
getTimeseriesDataRequest.SetTimeseriesKey(timeseriesKey)
getTimeseriesDataRequest.SetTimeRange(0 , time.Now().UnixNano() / 1000) // 指定查詢時間範圍。
getTimeseriesDataRequest.SetLimit(-1)
// 調用 GetTimeseriesData 介面查詢時間軸資料。
getTimeseriesResp , err := client.GetTimeseriesData(getTimeseriesDataRequest)
if err != nil {
fmt.Println("[Error]: Get timeseries data Failed with error: " , err)
return
}
fmt.Println("[Info]: Get timeseries data succeed ! TimeseriesRows: ")
for i := 0; i < len(getTimeseriesResp.GetRows()); i++ {
fmt.Println("[Info]: Row" , i , ": [" , getTimeseriesResp.GetRows()[i].GetTimeseriesKey().GetMeasurementName(),
getTimeseriesResp.GetRows()[i].GetTimeseriesKey().GetDataSource(),
getTimeseriesResp.GetRows()[i].GetTimeseriesKey().GetTags(), "]",
getTimeseriesResp.GetRows()[i].GetTimeInus())
rows := getTimeseriesResp.GetRows()[i].GetFieldsMap()
for key, value := range rows {
fmt.Println(key, value.Value)
}
}
fmt.Println("[Info]: GetTimeseriesDataSample finished! RequestId: " , getTimeseriesResp.RequestId)
}
常見問題
相關文檔
關於API說明的更多資訊,請參見GetTimeseriesData。
-
您還可以使用SQL查詢時序資料。更多資訊,請參見使用SQL查詢時序資料。
-
如果要可視化展示時序資料,您可以通過對接Grafana實現。更多資訊,請參見對接Grafana。
-
如果要低成本儲存時序資料以及快速查詢與分析時序資料,您可以使用時序分析儲存實現。更多資訊,請參見分析儲存。