通过调用GetTimeseriesData接口,您可以查询符合指定条件的时序数据。
前提条件
参数说明
request
包含以下参数:
参数 | 说明 |
参数 | 说明 |
timeseriesTableName(必选) | 时序表名称。 |
timeseriesKey(必选) | 时间线标识。包括如下内容:
|
beginTimeInUs(可选) | 要查询的时间范围,单位为微秒。默认值为0。 beginTimeInUs和endTimeInUs分别表示起始时间戳和结束时间戳,查询的时间范围为左闭右开的区间。 |
endTimeInUs(可选) | |
backward(可选) | 是否按照时间倒序读取数据,可用于获取某条时间线的最新数据。取值范围如下:
|
fieldsToGet(可选) | 要获取的数据列。如果不指定,则默认获取所有列。 在fieldsToGet中,需要明确指定要获取的每一列的列名及其数据类型。如果数据类型与实际不匹配,则将无法读取该列的数据。 |
limit(可选) | 本次请求最多返回的行数。默认值为5000,取值范围为 limit仅限制最多返回的行数,在满足条件行数大于limit时,也可能由于扫描数据量等限制导致返回行数少于limit条,此时可以通过nextToken继续获取后面的行。 |
nextToken(可选) | 如果一次查询仅返回了部分符合条件的行,此时response中会包括nextToken,可在下一次请求中指定nextToken用来继续读取数据。 如果需要持久化nextToken或者传输nextToken给前端页面,您可以使用Base64编码将nextToken编码为String后进行保存或传输。nextToken本身不是字符串,如果直接使用 |
示例
以下示例用于查询时序表中满足指定条件的时序数据。
# 时间线的标签信息。
tags = {"tag1": "t1", "tag2": "t2"}
# 时间线标识。
key = TimeseriesKey("measure1", "datasource1", tags)
try:
request = GetTimeseriesDataRequest("<TIMESERIES_TABLE_NAME>")
# 时间线标识
request.timeseriesKey = key
# 指定时间范围的结束时间戳。
request.endTimeInUs = int(time.time() * 1000000)
# 限制请求最多返回的行数。
request.limit = 20
# 指定要获取的数据列。如果不指定,则默认获取所有列。
request.fieldsToGet = {"string_field": DataType.STRING, "long_field": DataType.LONG}
# 调用接口查询时序数据。
response = ots_client.get_timeseries_data(request)
print(response.rows)
# 如果nextToken不为空,可以发起下一次请求。
if response.nextToken is not None:
# 获取nextToken。
next_token = response.nextToken
# 如果需要持久化nextToken或者传输nextToken给前端页面,您可以使用Base64编码将nextToken编码为String进行保存和传输。
# token本身不是字符串,直接使用str(nextToken)将token编码为String会造成token信息丢失。
token_as_string = base64.b64encode(next_token).decode('utf-8')
# 将String解码为byte。
next_token_byte = base64.b64decode(token_as_string.encode('utf-8'))
# 调用接口查询时序数据。
request.nextToken = next_token
response = ots_client.get_timeseries_data(request)
print(response.rows)
print("get timeseries data succeeded.")
except Exception as e:
# 如果抛出异常,则说明执行失败,处理异常。
print("get timeseries data failed. %s" % e)
- 本页导读 (1)
- 前提条件
- 参数说明
- 示例