查询时序数据

更新时间:2025-04-03 06:40:47

通过调用GetTimeseriesData接口,您可以查询符合指定条件的时序数据。

前提条件

初始化Tablestore Client

参数说明

request包含以下参数:

参数

说明

参数

说明

timeseriesTableName(必选

时序表名称。

timeseriesKey(必选

时间线标识。包括如下内容:

  • measurement_name(必选):时间线的度量名称。

  • data_source(必选):数据源信息。

  • tags(必选):时间线的标签信息,由多个键值对(key-value)组成。

beginTimeInUs(可选)

要查询的时间范围,单位为微秒。默认值为0。

beginTimeInUsendTimeInUs分别表示起始时间戳和结束时间戳,查询的时间范围为左闭右开的区间。

endTimeInUs(可选)

backward(可选)

是否按照时间倒序读取数据,可用于获取某条时间线的最新数据。取值范围如下:

  • True:按照时间倒序读取。

  • False(默认):按照时间正序读取。

fieldsToGet(可选)

要获取的数据列。如果不指定,则默认获取所有列。

重要

fieldsToGet中,需要明确指定要获取的每一列的列名及其数据类型。如果数据类型与实际不匹配,则将无法读取该列的数据。

limit(可选)

本次请求最多返回的行数。默认值为5000,取值范围为(0,5000]

说明

limit仅限制最多返回的行数,在满足条件行数大于limit时,也可能由于扫描数据量等限制导致返回行数少于limit条,此时可以通过nextToken继续获取后面的行。

nextToken(可选)

如果一次查询仅返回了部分符合条件的行,此时response中会包括nextToken,可在下一次请求中指定nextToken用来继续读取数据。

重要

如果需要持久化nextToken或者传输nextToken给前端页面,您可以使用Base64编码将nextToken编码为String后进行保存或传输。nextToken本身不是字符串,如果直接使用str(nextToken)token编码为String,则会导致token信息丢失。

示例

以下示例用于查询时序表中满足指定条件的时序数据。

# 时间线的标签信息。
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)
  • 前提条件
  • 参数说明
  • 示例
AI助理

点击开启售前

在线咨询服务

你好,我是AI助理

可以解答问题、推荐解决方案等