使用QueryTimeseriesMeta接口,您可以指定多种条件检索时间线。

前提条件

  • 已写入时序数据。具体操作,请参见写入时序数据
  • 已初始化TimeseriesClient。具体操作,请参见初始化

参数

metaQueryCondition表示检索时间线的条件,包括compositeMetaQueryCondition(组合条件)、measurementMetaQueryCondition(度量名称条件)、dataSourceMetaQueryCondition(数据源条件)、tagMetaQueryCondition(标签条件)、attributeMetaQueryCondition(属性条件)和updateTimeMetaQueryCondition(更新时间条件)。详细参数说明请参见下表。

参数 说明
compositeMetaQueryCondition 组合条件,包括如下内容:
  • operator:逻辑运算符,可选AND、OR、NOT。
  • subConditions:子条件列表,通过operator组成复杂查询条件。
measurementMetaQueryCondition 度量名称条件,包括如下内容:
  • operator:关系运算符或前缀匹配条件,关系运算符可选=、!=、>、>=、<、<=。
  • value:要匹配的度量名称值,类型为字符串。
dataSourceMetaQueryCondition 数据源条件,包括如下内容:
  • operator:关系运算符或前缀匹配条件,关系运算符可选=、!=、>、>=、<、<=。
  • value:要匹配的数据源值,类型为字符串。
tagMetaQueryCondition 标签条件,包括如下内容:
  • operator:关系运算符或前缀匹配条件,关系运算符可选=、!=、>、>=、<、<=。
  • value:要匹配的标签值,类型为字符串。
attributeMetaQueryCondition 时间线元数据的属性条件,包括如下内容:
  • operator:关系运算符或前缀匹配条件,关系运算符可选=、!=、>、>=、<、<=。
  • attributeName:属性名称,类型为字符串。
  • value:属性值,类型为字符串。
updateTimeMetaQueryCondition 时间线元数据的更新时间条件,包括如下内容:
  • operator:关系运算符,可选=、!=、>、>=、<、<=。
  • timeInUs:时间线元数据更新时间的时间戳,单位为微秒。

示例

/**
 * QueryTimeseriesMetaSample用于根据指定条件查询数据表中特定时间线的measurement、source和tag信息,其中查询条件可为组合条件。
 */
func QueryTimeseriesMetaSample(client *tablestore.TimeseriesClient , timeseriesTableName string) {
    fmt.Println("[Info]: Begin to query timeseries table meta!")

    // 构造多个查询条件。
    measurementMetaQueryCondition := tablestore.NewMeasurementQueryCondition(tablestore.OP_GREATER_EQUAL , "")
    datasourceMetaQueryCondition := tablestore.NewDataSourceMetaQueryCondition(tablestore.OP_GREATER_EQUAL , "")
    tagMetaQueryCondition := tablestore.NewTagMetaQueryCondition(tablestore.OP_GREATER_THAN , "City" , "")

    // 构造组合条件。
    compsiteMetaQueryCondition := tablestore.NewCompositeMetaQueryCondition(tablestore.OP_AND)
    compsiteMetaQueryCondition.AddSubConditions(measurementMetaQueryCondition)
    compsiteMetaQueryCondition.AddSubConditions(datasourceMetaQueryCondition)
    compsiteMetaQueryCondition.AddSubConditions(tagMetaQueryCondition)

    // 构造查询请求。
    queryTimeseriesMetaRequest := tablestore.NewQueryTimeseriesMetaRequest(timeseriesTableName)
    queryTimeseriesMetaRequest.SetCondition(compsiteMetaQueryCondition)
    queryTimeseriesMetaRequest.SetLimit(-1)

    // 调用时序客户端执行查询请求。
    queryTimeseriesTableResponse , err := client.QueryTimeseriesMeta(queryTimeseriesMetaRequest)
    if err != nil {
        fmt.Println("[Error]: Query timeseries table meta failed with error: " , err)
        return
    }
    fmt.Println("[Info]: Query timeseries table meta succeed: ")
    for i := 0; i < len(queryTimeseriesTableResponse.GetTimeseriesMetas()); i++ {
        curTimeseriesMeta := queryTimeseriesTableResponse.GetTimeseriesMetas()[i]
        fmt.Println("[Info]: Meta_" , i , ": " , "Measurement: " , curTimeseriesMeta.GetTimeseriesKey().GetMeasurementName() ,
            "Source: " , curTimeseriesMeta.GetTimeseriesKey().GetDataSource() ,
            "Tags: " , curTimeseriesMeta.GetTimeseriesKey().GetTagsSlice() ,
            "Attrs: " , curTimeseriesMeta.GetAttributeSlice())
    }
    fmt.Println("[Info]: QueryTimeseriesMetaSample finished !")
}