使用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)
}