Tablestore SDK for Java を使用して、時系列から時間範囲内のデータをクエリし、データを時系列順に並べ替え、返すフィールドを選択し、結果をページ分割します。
前提条件
Tablestore SDK for Java をインストールし、時系列クライアントを初期化します。
説明
完全な時系列識別子と時間範囲を指定して、単一の時系列からデータポイントをクエリするには、getTimeseriesData を呼び出します。時間範囲には開始時刻が含まれ、終了時刻は含まれません。
public GetTimeseriesDataResponse getTimeseriesData(GetTimeseriesDataRequest request) throws TableStoreException, ClientException
putTimeseriesData を呼び出して書き込まれたデータは、getTimeseriesData を呼び出すことで直ちにクエリできます。
次の例では、example_timeseries_table の cpu 時系列から直近 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 (必須) |
|
時系列テーブル名。 |
|
timeseriesKey (必須) |
|
クエリ対象の時系列の完全な識別子。値は、データの書き込みに使用したものと同一である必要があります。 |
|
beginTimeInUs (必須) |
|
クエリ範囲の開始時刻。1970-01-01 00:00:00 UTC からの経過マイクロ秒で指定します。値は |
|
endTimeInUs (必須) |
|
クエリ範囲の終了時刻。マイクロ秒で指定します。値は |
|
limit (オプション) |
|
1 回のリクエストで返す行数の制限。デフォルト値および最大値: |
|
nextToken (オプション) |
|
ページネーショントークン。最初のリクエストではこのパラメーターを指定しないでください。応答の |
|
backward (オプション) |
|
データを逆時系列順で返すかどうかを指定します。デフォルト: |
|
fieldsToGet (オプション) |
|
返すデータフィールドの名前とデータ型。指定しない場合、すべてのデータフィールドが返されます。指定したデータ型が実際のデータ型と異なる場合、そのフィールドは読み取れません。 |
時系列識別子
timeseriesKey は TimeseriesKey 型で、次のパラメーターが含まれます。
|
名前 |
タイプ |
説明 |
|
measurementName (必須) |
|
メジャー名。データの書き込みで空の値を使用した場合は、クエリでも空の値を使用します。 |
|
dataSource (オプション) |
|
データソース識別子。データの書き込みで空の値を使用した場合は、クエリでも空の値を使用します。 |
|
tags (オプション) |
|
文字列のキーと値のペアで表されるタグ。タグセットは、データの書き込みに使用したセットと同一である必要があります。 |
応答
GetTimeseriesDataResponse には、次の操作固有のフィールドが含まれます。
|
フィールド |
タイプ |
説明 |
|
|
|
現在のリクエストで返された行を取得するには、 |
|
|
|
次のページのトークンを取得するには、 |
時系列データ行
rows[] の各要素は TimeseriesRow 型で、次のフィールドが含まれます。
|
フィールド |
タイプ |
説明 |
|
|
|
時系列識別子を取得するには、 |
|
|
|
データポイントのタイムスタンプ (マイクロ秒) を取得するには、 |
|
|
|
データフィールドを取得するには、 |
例
すべての結果のページネーション
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);