Query time series

更新时间:
复制 MD 格式

Call QueryTimeseriesMeta to search for time series in a time series table. Filter by metric name, data source, tag, attribute, or update time to retrieve exactly the time series you need.

Note

For the full API specification, see QueryTimeseriesMeta.

Prerequisites

A client is initialized. For more information, see Initialize a Tablestore client.

Class definition

QueryTimeseriesMetaRequest accepts the time series table name and an optional query condition. Use setCondition to filter results, setGetTotalHits to include a count of matching time series, and setLimit to control page size. Paginate through results using NextToken.

public class QueryTimeseriesMetaRequest implements Request {
    /** The name of the time series table. */
    private final String timeseriesTableName;
    /** The query conditions.*/
    private MetaQueryCondition condition;
    /** Specifies whether to return the total number of time series that meet the query conditions. */
    private boolean getTotalHits = false;
    /** The number of time series to return at a time. */
    private int limit = -1;
    /** The token that is used in the next request to query time series. */
    private byte[] nextToken;
}

The following classes implement MetaQueryCondition and define the supported query condition types.

CompositeMetaQueryCondition

Combine multiple conditions using AND, OR, or NOT logic.

public class CompositeMetaQueryCondition implements MetaQueryCondition {
    /** The logical operator. */
    private final MetaQueryCompositeOperator operator;
    /** The list of subconditions. */
    private List<MetaQueryCondition> subConditions = new ArrayList<MetaQueryCondition>();
}

MeasurementMetaQueryCondition

Filter by metric name.

public class MeasurementMetaQueryCondition implements MetaQueryCondition {
    /** The relational operator. */
    private final MetaQuerySingleOperator operator;
    /** The name of the metric of the time series that you want to query. */
    private final String value;
}

DataSourceMetaQueryCondition

Filter by data source.

public class DataSourceMetaQueryCondition implements MetaQueryCondition {
    /** The relational operator. */
    private final MetaQuerySingleOperator operator;
     /** The name of the data source of the time series that you want to query. */
    private final String value;
}

TagMetaQueryCondition

Filter by tag name and value.

public class TagMetaQueryCondition implements MetaQueryCondition {
    /** The relational operator. */
    private final MetaQuerySingleOperator operator;
    /** The tag name. */
    private final String tagName;
    /** The tag value. */
    private final String value;
}

AttributeMetaQueryCondition

Filter by attribute name and value.

public class AttributeMetaQueryCondition implements MetaQueryCondition {
    /** The relational operator. */
    private final MetaQuerySingleOperator operator;
    /** The attribute name. */
    private final String attributeName;
    /** The attribute value. */
    private final String value;
}

UpdateTimeMetaQueryCondition

Filter by the time the time series metadata was last updated.

public class UpdateTimeMetaQueryCondition implements MetaQueryCondition {
    /** The relational operator. */
    private final MetaQuerySingleOperator operator;
    /** The timestamp when the time series metadata is updated. */
    private final long timeInUs;
}

Parameters

Specify timeseriesTableName and at least one condition. The table below describes each condition type.

Condition

Description

compositeMetaQueryCondition

Combines multiple conditions with a logical operator:

  • operator: the logical operator. Valid values: AND, OR, and NOT.

  • subConditions: the list of conditions to combine.

measurementMetaQueryCondition

Filters by metric name:

  • operator: the relational operator or the prefix match condition. Valid values: =, !=, >, >=, <, and <=.

  • value: the metric name to match. Type: STRING.

dataSourceMetaQueryCondition

Filters by data source:

  • operator: the relational operator or the prefix match condition. Valid values: =, !=, >, >=, <, and <=.

  • value: the data source name to match. Type: STRING.

tagMetaQueryCondition

Filters by tag name and value:

  • operator: the relational operator or the prefix match condition. Valid values: =, !=, >, >=, <, and <=.

  • tagName: the tag name to match. Type: STRING.

  • value: the tag value to match. Type: STRING.

attributeMetaQueryCondition

Filters by attribute name and value:

  • operator: the relational operator or the prefix match condition. Valid values: =, !=, >, >=, <, and <=.

  • attributeName: the attribute name to match. Type: STRING.

  • value: the attribute value to match. Type: STRING.

updateTimeMetaQueryCondition

Filters by the time the metadata was last updated:

  • operator: the relational operator. Valid values: =, !=, >, >=, <, and <=.

  • timeInUs: the update timestamp. Unit: microseconds.

Example

The following example queries all time series in a table where the metric name is cpu and the os tag value starts with Ubuntu. Results are retrieved in pages of up to 100 entries, stopping after 1,000 total results.

private static void queryTimeseriesMeta(TimeseriesClient client) {
    // Specify the name of the time series table. 
    String tableName = "<TIME_SERIES_TABLE>";
    QueryTimeseriesMetaRequest queryTimeseriesMetaRequest = new QueryTimeseriesMetaRequest(tableName);
    // Query all time series whose metric name is cpu and that have the os tag whose value is prefixed with 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);
    // Specify the maximum number of time series metadata entries that can be returned for a single request. 
    queryTimeseriesMetaRequest.setLimit(100);
    // Initiate the query. 
    QueryTimeseriesMetaResponse queryTimeseriesMetaResponse = client.queryTimeseriesMeta(queryTimeseriesMetaRequest);
    // Display the total number of time series that meet the query conditions. 
    System.out.println(queryTimeseriesMetaResponse.getTotalHits());

    // Save the request results. 
    List<TimeseriesMeta> timeseriesMetas = new ArrayList<TimeseriesMeta>();
    timeseriesMetas.addAll(queryTimeseriesMetaResponse.getTimeseriesMetas());

    // If NextToken is included in the response, you can initiate a new request to obtain the remaining results. 
    while (queryTimeseriesMetaResponse.getNextToken() != null) {
        queryTimeseriesMetaRequest.setNextToken(queryTimeseriesMetaResponse.getNextToken());
        queryTimeseriesMetaResponse = client.queryTimeseriesMeta(queryTimeseriesMetaRequest);
        timeseriesMetas.addAll(queryTimeseriesMetaResponse.getTimeseriesMetas());
        // Specify the maximum number of time series that can be returned. 
        if (timeseriesMetas.size() >= 1000) {
            break;
        }
    }

    System.out.println(timeseriesMetas.size());
    for (TimeseriesMeta timeseriesMeta : timeseriesMetas) {
        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());
    }
}

What's next

After querying time series, you can: