使用GetTimeseriesData介面,您可以查詢符合指定條件的時序資料。

前提條件

  • 已寫入時序資料。具體操作,請參見寫入時序資料
  • 已初始化TimeseriesClient。具體操作,請參見初始化

參數

參數 說明
timeseriesKey 要查詢的時間軸,包括如下內容:
  • measurementName:時間軸的度量名稱。
  • dataSource:資料來源資訊,可以為空白。
  • tags:時間軸的標籤資訊,為多個字串的key-value對。
timeRange 要查詢的時間範圍,範圍為左閉右開區間。包括如下內容:
  • beginTimeInUs:起始時間。
  • endTimeInUs:結束時間。
backward 是否按照時間倒序讀取資料,可用於擷取某條時間軸的最新資料。取值範圍如下:
  • true:按照時間倒序讀取。
  • false(預設):按照時間正序讀取。
fieldsToGet 要擷取的資料列列名。如果不指定,則預設擷取所有列。
注意 fieldsToGet中需要指定要擷取的每一列的列名和類型。如果類型不符,則讀取不到對應列的資料。
limit 本次最多返回的行數。
说明 limit僅限制最多返回的行數,在滿足條件行數大於limit時,也可能由於掃描資料量等限制導致返回行數少於limit條,此時可以通過nextToken繼續擷取後面的行。
nextToken 如果一次查詢僅返回了部分合格行,此時response中會包括nextToken,可在下一次請求中指定nextToken用來繼續讀取資料。

樣本

/**
 * GetTimeseriesDataSample用於根據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)

    // 調用時序用戶端介面擷取時間軸資料。
    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().GetTagsSlice(), "]",
            getTimeseriesResp.GetRows()[i].GetFieldsSlice(),
            getTimeseriesResp.GetRows()[i].GetTimeInus())
    }
    fmt.Println("[Info]: GetTimeseriesDataSample finished! RequestId: " , getTimeseriesResp.RequestId)
}