使用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:时间线元数据更新时间的时间戳,单位为微秒。

示例

查询test_timeseries_table时序表中度量名称为cpu,标签中含有os标签且标签前缀为"Ubuntu"的所有时间线。

private static void queryTimeseriesMeta(TimeseriesClient client) {
    String tableName = "test_timeseries_table";
    QueryTimeseriesMetaRequest queryTimeseriesMetaRequest = new QueryTimeseriesMetaRequest(tableName);
    // 查询度量名称为cpu,标签中含有os标签且前缀为"Ubuntu"的所有时间线。即measurement_name="cpu" and have_prefix(os, "Ubuntu")
    CompositeMetaQueryCondition compositeMetaQueryCondition = new CompositeMetaQueryCondition(MetaQueryCompositeOperator.OP_AND);
    compositeMetaQueryCondition.addSubCondition(new MeasurementMetaQueryCondition(MetaQuerySingleOperator.OP_EQUAL, "cpu"));
    compositeMetaQueryCondition.addSubCondition(new TagMetaQueryCondition(MetaQuerySingleOperator.OP_PREFIX, "os", "Ubuntu"));
    queryTimeseriesMetaRequest.setCondition(compositeMetaQueryCondition);
    queryTimeseriesMetaRequest.setGetTotalHits(true);
    QueryTimeseriesMetaResponse queryTimeseriesMetaResponse = client.queryTimeseriesMeta(queryTimeseriesMetaRequest);
    System.out.println(queryTimeseriesMetaResponse.getTotalHits());
    for (TimeseriesMeta timeseriesMeta : queryTimeseriesMetaResponse.getTimeseriesMetas()) {
        System.out.println(timeseriesMeta.getTimeseriesKey().getMeasurementName());
        System.out.println(timeseriesMeta.getTimeseriesKey().getDataSource());
        System.out.println(timeseriesMeta.getTimeseriesKey().getTags());
        System.out.println(timeseriesMeta.getAttributes());
        System.out.println(timeseriesMeta.getUpdateTimeInUs());
    }
}