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

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

最終更新日:Dec 28, 2024

GetTimeseriesDataオペレーションを呼び出して、時系列テーブルで指定された条件を満たす時系列データをクエリできます。

前提条件

パラメーター

パラメーター

説明

timeseriesKey

クエリする時系列の識別子。次のパラメーターを使用して識別子を指定できます。

  • measurementName: 時系列のメジャーメント名。このパラメーターは空のままにすることができます。

  • dataSource: 時系列のデータソース。このパラメーターは空のままにすることができます。

  • tags: 時系列のタグ。このパラメーターの値は、String型のキーと値のペアです。

timeRange

クエリの時間範囲。時間範囲は左閉区間、右開区間です。次のパラメーターを使用して時間範囲を指定できます。

  • beginTimeInUs: 開始時刻。

  • endTimeInUs: 終了時刻。

backward

クエリ結果を逆 chron 順にソートするかどうかを指定します。このパラメーターを使用すると、時系列の最新データを取得できます。有効な値:

  • true: クエリ結果を逆 chron 順にソートします。

  • false: クエリ結果を chron 順にソートします。これはデフォルト値です。

fieldsToGet

返す列の名前。このパラメーターを指定しない場合は、すべての列がクエリされます。

重要

fieldsToGetパラメーターを設定する場合、返す各列の名前とデータ型を指定する必要があります。指定された列の名前とデータ型が一致しない場合、列のデータは返されません。

limit

返す最大行数。

説明

limitパラメーターは、返す最大行数のみを指定します。指定された条件を満たす行数がlimitを超えていても、スキャンの最大データ量などの他の理由により、返される行数がlimitよりも少なくなる場合があります。この場合、nextTokenパラメーターを指定することで残りの行を取得できます。

nextToken

クエリで指定された条件を満たす行の一部のみが返された場合、レスポンスにはnextTokenパラメーターが含まれます。次のリクエストでnextTokenパラメーターを指定して、残りの行を取得できます。

次のサンプルコードは、test_timeseries_tableという名前の時系列テーブルで、指定された条件を満たす時系列データをクエリする方法の例を示しています。

private static void getTimeseriesData(TimeseriesClient client) {
    String tableName = "test_timeseries_table";
    GetTimeseriesDataRequest getTimeseriesDataRequest = new GetTimeseriesDataRequest(tableName);
    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(10);
    // オプション。クエリ結果を逆 chron 順にソートするかどうかを指定します。デフォルト値:false。このパラメーターをtrueに設定すると、クエリ結果は逆 chron 順にソートされます。
    getTimeseriesDataRequest.setBackward(false);
    // オプション。返す列を指定します。このパラメーターを指定しない場合は、すべての列が返されます。
    getTimeseriesDataRequest.addFieldToGet("string_1", ColumnType.STRING);
    getTimeseriesDataRequest.addFieldToGet("long_1", ColumnType.INTEGER);

    GetTimeseriesDataResponse getTimeseriesDataResponse = client.getTimeseriesData(getTimeseriesDataRequest);
    System.out.println(getTimeseriesDataResponse.getRows().size());
    if (getTimeseriesDataResponse.getNextToken() != null) {
        // nextTokenパラメーターが空でない場合は、別のリクエストを開始して残りの行を取得できます。
        getTimeseriesDataRequest.setNextToken(getTimeseriesDataResponse.getNextToken());
        getTimeseriesDataResponse = client.getTimeseriesData(getTimeseriesDataRequest);
        System.out.println(getTimeseriesDataResponse.getRows().size());
    }
}

参照