すべてのプロダクト
Search
ドキュメントセンター

Tablestore:時系列のクエリ

最終更新日:Apr 30, 2026

QueryTimeseriesMeta を呼び出して、時系列テーブル内の時系列を検索します。メトリック名、データソース、タグ、属性、または更新時間でフィルターを適用し、必要な時系列を正確に取得できます。

説明

API の完全な仕様については、「QueryTimeseriesMeta」をご参照ください。

前提条件

クライアントが初期化済みである必要があります。詳細については、「Tablestore クライアントの初期化」をご参照ください。

クラス定義

QueryTimeseriesMetaRequest は、時系列テーブル名とオプションのクエリ条件を受け取ります。setCondition を使用して結果をフィルターし、setGetTotalHits を使用して一致する時系列の件数を含め、setLimit を使用してページサイズを制御します。結果のページネーションには 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;
}

以下のクラスは MetaQueryCondition を実装し、サポートされるクエリ条件タイプを定義します。

CompositeMetaQueryCondition

ANDOR、または NOT 論理演算子を使用して複数の条件を組み合わせます。

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

MeasurementMetaQueryCondition

メトリック名でフィルターします。

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

データソースでフィルターします。

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

タグ名およびタグ値でフィルターします。

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

属性名および属性値でフィルターします。

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

時系列メタデータが最後に更新された時刻でフィルターします。

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;
}

パラメーター

timeseriesTableName および少なくとも 1 つの条件を指定します。以下の表は、各条件タイプについて説明しています。

条件

説明

compositeMetaQueryCondition

論理演算子を使用して複数の条件を組み合わせます。

  • operator:論理演算子。有効な値は、AND、OR、NOT です。

  • subConditions:組み合わせる条件のリスト。

measurementMetaQueryCondition

メトリック名でフィルターします。

  • operator:関係演算子またはプレフィックス一致条件。有効な値は、=、!=、>、>=、<、<= です。

  • value:一致させるメトリック名。タイプ:STRING。

dataSourceMetaQueryCondition

データソースでフィルターします。

  • operator:関係演算子またはプレフィックス一致条件。有効な値は、=、!=、>、>=、<、<= です。

  • value:一致させるデータソース名。タイプ:STRING。

tagMetaQueryCondition

タグ名およびタグ値でフィルターします。

  • operator:関係演算子またはプレフィックス一致条件。有効な値は、=、!=、>、>=、<、<= です。

  • tagName:一致させるタグ名。タイプ:STRING。

  • value:一致させるタグ値。タイプ:STRING。

attributeMetaQueryCondition

属性名および属性値でフィルターします。

  • operator:関係演算子またはプレフィックス一致条件。有効な値は、=、!=、>、>=、<、<= です。

  • attributeName:一致させる属性名。タイプ:STRING。

  • value:一致させる属性値。タイプ:STRING。

updateTimeMetaQueryCondition

メタデータが最後に更新された時刻でフィルターします。

  • operator:関係演算子。有効な値は、=、!=、>、>=、<、<= です。

  • timeInUs:更新タイムスタンプ。単位:マイクロ秒。

以下の例では、メトリック名が cpu で、os タグの値が Ubuntu で始まるすべての時系列をテーブルからクエリします。結果は最大 100 件ずつページングされ、合計 1,000 件の結果が取得された時点で停止します。

private static void queryTimeseriesMeta(TimeseriesClient client) {
    // 時系列テーブルの名前を指定します。 
    String tableName = "<TIME_SERIES_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);
    // 1 回のリクエストで返される時系列メタデータエントリの最大数を指定します。 
    queryTimeseriesMetaRequest.setLimit(100);
    // クエリを実行します。 
    QueryTimeseriesMetaResponse queryTimeseriesMetaResponse = client.queryTimeseriesMeta(queryTimeseriesMetaRequest);
    // クエリ条件を満たす時系列の総数を表示します。 
    System.out.println(queryTimeseriesMetaResponse.getTotalHits());

    // リクエスト結果を保存します。 
    List<TimeseriesMeta> timeseriesMetas = new ArrayList<TimeseriesMeta>();
    timeseriesMetas.addAll(queryTimeseriesMetaResponse.getTimeseriesMetas());

    // 応答に NextToken が含まれている場合、新しいリクエストを送信して残りの結果を取得できます。 
    while (queryTimeseriesMetaResponse.getNextToken() != null) {
        queryTimeseriesMetaRequest.setNextToken(queryTimeseriesMetaResponse.getNextToken());
        queryTimeseriesMetaResponse = client.queryTimeseriesMeta(queryTimeseriesMetaRequest);
        timeseriesMetas.addAll(queryTimeseriesMetaResponse.getTimeseriesMetas());
        // 返される時系列の最大数を指定します。 
        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());
    }
}

次のステップ

時系列をクエリした後、以下の操作が可能です。

  • 一致する時系列内のデータポイントをクエリします。詳細については、「時系列データのクエリ」をご参照ください。

  • 時系列メタデータに格納されている属性を更新します。詳細については、「時系列メタデータの更新」をご参照ください。

  • 不要になった時系列メタデータを削除します。詳細については、「時系列メタデータの削除」をご参照ください。