查詢時序資料

更新時間:
Copy as MD

通過 Tablestore SDK for Java 從時序表中查詢符合指定條件的時序資料。

前提條件

參數

參數

是否必選

說明

timeseriesKey

待查詢時間軸的標識資訊,包含以下子參數:

  • measurementName:時間軸的度量名稱。

  • dataSource:資料來源資訊,可為空白。

  • tags:時間軸的標籤資訊,為多個字串類型的索引值對。

重要

如果不確定時間軸的標識資訊(例如度量名稱、資料來源資訊),可調用QueryTimeseriesMeta介面,通過多種條件檢索目標時間軸。更多資訊,請參見檢索時間軸

timeRange

查詢的時間範圍,為左閉右開區間,包含以下子參數:

  • beginTimeInUs:起始時間。

  • endTimeInUs:結束時間。

backward

是否按時間倒序返回資料,可用於擷取最新資料點。取值如下:

  • true:按時間倒序返回。

  • false(預設值):按時間正序返回。

fieldsToGet

要返回的資料列的列名。不指定時,預設返回所有列。

重要

指定 fieldsToGet 時,需同時提供每列的列名和資料類型。若資料類型不匹配,則該列資料無法讀取。

limit

單次請求最多返回的行數。

說明

limit 僅限制單次返回的最大行數。若合格資料量超過 limit,或因掃描資料量限制導致實際返回行數少於 limit,可通過 nextToken 繼續讀取後續資料。

nextToken

分頁令牌。若單次查詢僅返回部分結果,響應中會包含 nextToken,在下次請求中傳入該 token 可繼續讀取後續資料。

重要

如需持久化 nextToken 或將其傳輸至前端頁面,使用 Base 64 編碼將其轉換為字串後再儲存或傳輸。nextToken 本身不是字串類型,直接使用 string(nextToken) 轉換會導致 token 資訊丟失。

樣本

以下樣本通過指定 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

  • 如果要低成本儲存時序資料以及快速查詢與分析時序資料,您可以使用時序分析儲存實現。更多資訊,請參見分析儲存