全部產品
Search
文件中心

Tablestore:查詢時序資料

更新時間:Sep 22, 2026

使用 Go SDK 查詢指定時間軸在時間範圍內的時序資料,並支援按時間排序、選擇返回列和分頁讀取。

前提條件

參數

參數

是否必選

說明

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。

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