使用GetTimeseriesData接口,您可以查询符合指定条件的时序数据。
前提条件
已写入时序数据。具体操作,请参见写入时序数据。
已初始化TimeseriesClient。具体操作,请参见初始化OTSClient。
参数
参数 | 是否必选 | 说明 |
timeseriesKey | 是 | 要查询的时间线,包括如下内容:
重要 如果不确定要查询的时间线信息(例如度量名称、数据源信息)的时间线,您可以使用QueryTimeseriesMeta接口指定多种条件检索时间线。更多信息,请参见检索时间线。 |
timeRange | 是 | 要查询的时间范围,范围为左闭右开区间。包括如下内容:
|
backward | 否 | 是否按照时间倒序读取数据,可用于获取某条时间线的最新数据。取值范围如下:
|
fieldsToGet | 否 | 要获取的数据列的列名。如果不指定,则默认获取所有列。 重要 fieldsToGet中需要指定要获取的每一列的列名和类型。如果类型不匹配,则无法读取到对应列的数据。 |
limit | 否 | 本次最多返回的行数。 说明 limit仅限制最多返回的行数,当满足条件的行数大于limit时,也可能由于扫描数据量等限制导致返回的行数少于limit条,此时可以通过nextToken继续获取后面的行。 |
nextToken | 否 | 如果一次查询仅返回了部分符合条件的行,此时response中会包括nextToken,可在下一次请求中指定nextToken用来继续读取数据。 |
示例
以下示例用于根据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().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。