通过 Tablestore SDK for Java 从时序表中查询符合指定条件的时序数据。
前提条件
已写入时序数据。具体操作,请参见写入时序数据。
已初始化 TimeseriesClient。具体操作,请参见初始化Tablestore Client。
参数
|
参数 |
是否必选 |
说明 |
|
timeseriesKey |
是 |
待查询时间线的标识信息,包含以下子参数:
重要
如果不确定时间线的标识信息(例如度量名称、数据源信息),可调用QueryTimeseriesMeta接口,通过多种条件检索目标时间线。更多信息,请参见检索时间线。 |
|
timeRange |
是 |
查询的时间范围,为左闭右开区间,包含以下子参数:
|
|
backward |
否 |
是否按时间倒序返回数据,可用于获取最新数据点。取值如下:
|
|
fieldsToGet |
否 |
要返回的数据列的列名。不指定时,默认返回所有列。 重要
指定 fieldsToGet 时,需同时提供每列的列名和数据类型。若数据类型不匹配,则该列数据无法读取。 |
|
limit |
否 |
单次请求最多返回的行数。 说明
limit 仅限制单次返回的最大行数。若符合条件的数据量超过 limit,或因扫描数据量限制导致实际返回行数少于 limit,可通过 nextToken 继续读取后续数据。 |
|
nextToken |
否 |
分页令牌。若单次查询仅返回部分结果,响应中会包含 nextToken,在下次请求中传入该 token 可继续读取后续数据。 重要
如需持久化 nextToken 或将其传输至前端页面,使用 Base64 编码将其转换为字符串后再保存或传输。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)
// 调用 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。
-
如果要低成本存储时序数据以及快速查询与分析时序数据,您可以使用时序分析存储实现。更多信息,请参见分析存储。