检索时间线

通过调用QueryTimeseriesMeta接口,您可以查询符合指定条件的时间线。

前提条件

初始化Tablestore Client

参数说明

参数

说明

timeseriesTableName(必选

时序表名称。

condition(可选)

检索时间线的查询条件,支持以下多种条件的组合方式。

  • CompositeMetaQueryCondition:组合条件。包括以下内容:

    • operator:逻辑运算符,可选OP_ANDOP_OROP_NOT

    • sub_conditions:子条件列表,通过operator组成复杂查询条件。

  • MeasurementMetaQueryCondition:度量名称条件。

    • operator:关系运算符或前缀匹配条件(OP_PREFIX),关系运算符可选OP_EQUALOP_NOT_EQUALOP_GREATER_THANOP_GREATER_EQUALOP_LESS_THANOP_LESS_EQUAL

    • value:要匹配的度量名称值,类型为字符串。

  • DataSourceMetaQueryCondition:数据源条件。

    • operator:关系运算符或前缀匹配条件(OP_PREFIX),关系运算符可选OP_EQUALOP_NOT_EQUALOP_GREATER_THANOP_GREATER_EQUALOP_LESS_THANOP_LESS_EQUAL

    • value:要匹配的数据源值,类型为字符串。

  • TagMetaQueryCondition:标签条件。

    • operator:关系运算符或前缀匹配条件(OP_PREFIX),关系运算符可选OP_EQUALOP_NOT_EQUALOP_GREATER_THANOP_GREATER_EQUALOP_LESS_THANOP_LESS_EQUAL

    • tag_name:要匹配的标签名称,类型为字符串。

    • value:要匹配的标签值,类型为字符串。

  • UpdateTimeMetaQueryCondition:时间线元数据的更新时间条件。

    • operator:关系运算符,可选OP_EQUALOP_NOT_EQUALOP_GREATER_THANOP_GREATER_EQUALOP_LESS_THANOP_LESS_EQUAL

    • time_in_us:时间线元数据更新时间的时间戳,类型为整型。单位为微秒。

  • AttributeMetaQueryCondition:时间线元数据的属性条件。

    • operator:关系运算符或前缀匹配条件(OP_PREFIX),关系运算符可选OP_EQUALOP_NOT_EQUALOP_GREATER_THANOP_GREATER_EQUALOP_LESS_THANOP_LESS_EQUAL

    • attribute_name:属性名称,类型为字符串。

    • value:属性值,类型为字符串。

getTotalHits(可选)

是否获取符合条件总行数。默认值为False。

limit(可选)

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

说明

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

nextToken(可选)

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

重要

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

示例

以下示例用于查询时序表中符合条件的时间线。

try:
    # 查询条件:度量名称为cpu,标签中含有os标签且前缀为"Ubuntu"的所有时间线。即measurement_name="cpu" and have_prefix(os, "Ubuntu")。
    measCond = MeasurementMetaQueryCondition(MetaQuerySingleOperator.OP_EQUAL, "cpu")
    tagCond = TagMetaQueryCondition(MetaQuerySingleOperator.OP_PREFIX, "os", "Ubuntu")
    condition = CompositeMetaQueryCondition(MetaQueryCompositeOperator.OP_AND, [measCond, tagCond])

    request = QueryTimeseriesMetaRequest("<TIMESERIES_TABLE_NAME>", condition)
    # 调用接口检索时间线。
    response = ots_client.query_timeseries_meta(request)
    print("query timeseries metas succeeded. ")
    for timeseriesMeta in response.timeseriesMetas:
        print("data_source: %s, measurement_name: %s, tags: %s, attributes : %s, update_time_in_us: %s." % (
        timeseriesMeta.timeseries_key.data_source, timeseriesMeta.timeseries_key.measurement_name,
        timeseriesMeta.timeseries_key.tags,
        timeseriesMeta.attributes, timeseriesMeta.update_time_in_us))
except Exception as e:
    # 如果抛出异常,则说明执行失败,处理异常。
    print("query timeseries meta failed. %s" % e)