全部产品
Search
文档中心

表格存储:查询时序数据

更新时间:Sep 21, 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 或将其传输至前端页面,使用 Base64 编码将其转换为字符串后再保存或传输。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。

  • 如果要低成本存储时序数据以及快速查询与分析时序数据,您可以使用时序分析存储实现。更多信息,请参见分析存储。