查询时序数据

更新时间:
复制 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 或将其传输至前端页面,使用 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

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