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

Tablestore:時系列データのクエリ

最終更新日:Aug 04, 2026

Tablestore SDK for Java を使用して、時系列から時間範囲内のデータをクエリし、データを時系列順に並べ替え、返すフィールドを選択し、結果をページ分割します。

前提条件

Tablestore SDK for Java をインストールし、時系列クライアントを初期化します。

説明

完全な時系列識別子と時間範囲を指定して、単一の時系列からデータポイントをクエリするには、getTimeseriesData を呼び出します。時間範囲には開始時刻が含まれ、終了時刻は含まれません。

public GetTimeseriesDataResponse getTimeseriesData(GetTimeseriesDataRequest request) throws TableStoreException, ClientException
説明

putTimeseriesData を呼び出して書き込まれたデータは、getTimeseriesData を呼び出すことで直ちにクエリできます。

次の例では、example_timeseries_tablecpu 時系列から直近 1 時間に生成されたデータをクエリし、1 回のリクエストで最大 20 行を返します。

TimeseriesClient timeseriesClient = client.asTimeseriesClient();

Map<String, String> tags = new HashMap<>();
tags.put("region", "cn-hangzhou");
tags.put("host", "host_0");
TimeseriesKey timeseriesKey = new TimeseriesKey("cpu", "source_0", tags);

long endTimeInUs = System.currentTimeMillis() * 1000L;
long beginTimeInUs = endTimeInUs - 3600L * 1000L * 1000L;
GetTimeseriesDataRequest request =
        new GetTimeseriesDataRequest("example_timeseries_table");
request.setTimeseriesKey(timeseriesKey);
request.setTimeRange(beginTimeInUs, endTimeInUs);
request.setLimit(20);

GetTimeseriesDataResponse response = timeseriesClient.getTimeseriesData(request);
for (TimeseriesRow row : response.getRows()) {
    System.out.println(row.getTimeInUs());
    System.out.println(row.getFields());
}

パラメーター

GetTimeseriesDataRequest には、次のパラメーターが含まれます。

名前

タイプ

説明

timeseriesTableName (必須)

String

時系列テーブル名。

timeseriesKey (必須)

TimeseriesKey

クエリ対象の時系列の完全な識別子。値は、データの書き込みに使用したものと同一である必要があります。

beginTimeInUs (必須)

long

クエリ範囲の開始時刻。1970-01-01 00:00:00 UTC からの経過マイクロ秒で指定します。値は 0 以上である必要があります。クエリ範囲にはこの時刻が含まれます。

endTimeInUs (必須)

long

クエリ範囲の終了時刻。マイクロ秒で指定します。値は 0 より大きい必要があります。クエリ範囲にはこの時刻は含まれません。

limit (オプション)

int

1 回のリクエストで返す行数の制限。デフォルト値および最大値: 5000。スキャンされるデータ量の制限により、実際に返される行数はこの値より少ない場合があります。残りのデータを取得するには、nextToken を使用します。

nextToken (オプション)

byte[]

ページネーショントークン。最初のリクエストではこのパラメーターを指定しないでください。応答の nextToken が空でない場合は、次のリクエストに渡します。このトークンはバイナリデータです。永続化または転送するには、Base64 でエンコードします。new String(nextToken) を呼び出して変換しないでください。

backward (オプション)

boolean

データを逆時系列順で返すかどうかを指定します。デフォルト: false。この場合、データは時系列順で返されます。

fieldsToGet (オプション)

List<Pair<String, ColumnType>>

返すデータフィールドの名前とデータ型。指定しない場合、すべてのデータフィールドが返されます。指定したデータ型が実際のデータ型と異なる場合、そのフィールドは読み取れません。

時系列識別子

timeseriesKeyTimeseriesKey 型で、次のパラメーターが含まれます。

名前

タイプ

説明

measurementName (必須)

String

メジャー名。データの書き込みで空の値を使用した場合は、クエリでも空の値を使用します。

dataSource (オプション)

String

データソース識別子。データの書き込みで空の値を使用した場合は、クエリでも空の値を使用します。

tags (オプション)

SortedMap<String, String>

文字列のキーと値のペアで表されるタグ。タグセットは、データの書き込みに使用したセットと同一である必要があります。

応答

GetTimeseriesDataResponse には、次の操作固有のフィールドが含まれます。

フィールド

タイプ

説明

rows

List<TimeseriesRow>

現在のリクエストで返された行を取得するには、getRows() を呼び出します。

nextToken

byte[]

次のページのトークンを取得するには、getNextToken() を呼び出します。値が null の場合、クエリ範囲内のすべてのデータが返されています。

時系列データ行

rows[] の各要素は TimeseriesRow 型で、次のフィールドが含まれます。

フィールド

タイプ

説明

timeseriesKey

TimeseriesKey

時系列識別子を取得するには、getTimeseriesKey() を呼び出します。

timeInUs

long

データポイントのタイムスタンプ (マイクロ秒) を取得するには、getTimeInUs() を呼び出します。

fields

SortedMap<String, ColumnValue>

データフィールドを取得するには、getFields() を呼び出します。

すべての結果のページネーション

1 回のリクエストで全データが返されない場合は、応答から取得した nextToken を、返される値が null になるまで繰り返し渡します。

byte[] nextToken = null;
do {
    request.setNextToken(nextToken);
    GetTimeseriesDataResponse response =
            timeseriesClient.getTimeseriesData(request);

    for (TimeseriesRow row : response.getRows()) {
        System.out.println(row.getTimeInUs());
        System.out.println(row.getFields());
    }
    nextToken = response.getNextToken();
} while (nextToken != null);