Tablestore SDK for Java を使用して、時系列テーブルから特定の条件を満たす時系列データをクエリします。
前提条件
クライアントが初期化済みである必要があります。詳細については、「Tablestore クライアントの初期化」をご参照ください。
メソッド
public GetTimeseriesDataResponse getTimeseriesData(GetTimeseriesDataRequest request) throws TableStoreException, ClientException
サンプルコード
以下の例では、timeseries_table_sample という名前の時系列テーブルから時系列データをクエリします。
private static void getTimeseriesData(TimeseriesClient client) {
String tableName = "timeseries_table_sample";
GetTimeseriesDataRequest getTimeseriesDataRequest = new GetTimeseriesDataRequest(tableName);
// 時系列識別子を指定します。この例では、メトリック名は cpu、データソースは host_0、タグは "region=hangzhou" および "os=Ubuntu16.04" です。
Map<String, String> tags = new HashMap<String, String>();
tags.put("region", "hangzhou");
tags.put("os", "Ubuntu16.04");
TimeseriesKey timeseriesKey = new TimeseriesKey("cpu", "host_0", tags);
getTimeseriesDataRequest.setTimeseriesKey(timeseriesKey);
// 時間範囲を指定します。
getTimeseriesDataRequest.setTimeRange(0, (System.currentTimeMillis() + 60 * 1000) * 1000);
getTimeseriesDataRequest.setLimit(20);
// 時系列データをクエリします。
GetTimeseriesDataResponse getTimeseriesDataResponse = client.getTimeseriesData(getTimeseriesDataRequest);
// クエリ結果を出力します。
getTimeseriesDataResponse.getRows().forEach(row -> {
System.out.println("TimeseriesKey: " + row.getTimeseriesKey() + "; TimeInUs: " + row.getTimeInUs() + "; Fields: " + row.getFields());
});
}
以下のオプション設定も可能です。
-
1 回のリクエストで返される行の最大数を設定
getTimeseriesDataRequest.setLimit(20); -
逆順でデータを読み取り
// 最新のデータを取得するために、逆順でデータを読み取ります。 getTimeseriesDataRequest.setBackward(true); -
返すデータ列を指定
getTimeseriesDataRequest.addFieldToGet("col_string", ColumnType.STRING); getTimeseriesDataRequest.addFieldToGet("col_long", ColumnType.INTEGER); getTimeseriesDataRequest.addFieldToGet("col_double", ColumnType.DOUBLE); -
nextTokenパラメーターを使用して結果をページネーション// nextToken が null でない場合、さらにデータがあります。 if (getTimeseriesDataResponse.getNextToken() != null) { // nextToken の値を取得します。 byte[] nextToken = getTimeseriesDataResponse.getNextToken(); /* // nextToken を永続化または転送するには、Base64 文字列としてエンコードします。 String tokenAsString = Base64.toBase64String(nextToken); // 文字列を byte[] にデコードします。 byte[] tokenAsByte = Base64.fromBase64String(tokenAsString); */ // 次のページを取得するために nextToken を渡します。 getTimeseriesDataRequest.setNextToken(nextToken); // 時系列データをクエリします。 getTimeseriesDataResponse = client.getTimeseriesData(getTimeseriesDataRequest); // クエリ結果を出力します。 getTimeseriesDataResponse.getRows().forEach(row -> { System.out.println("TimeseriesKey: " + row.getTimeseriesKey() + "; TimeInUs: " + row.getTimeInUs() + "; Fields: " + row.getFields()); }); }