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

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

最終更新日:Dec 28, 2024

特定の期間内の時系列データに対してクエリを実行できます。クエリを実行する時系列データのメトリック名やデータソースなどの情報が不明な場合は、条件を指定して時系列をクエリし、その時系列のデータに対してクエリを実行できます。

概要

GetTimeseriesData オペレーションを呼び出すことで、特定の時系列において特定の条件を満たす時系列データに対してクエリを実行できます。

時系列データに対してクエリを実行する場合は、ビジネス要件に基づいて時系列の情報とクエリ条件を指定する必要があります。

  • クエリ結果を逆時系列順にソートするかどうかを指定します。逆時系列順にソートすることで、時系列の最新データを取得できます。

  • 返すデータ列を指定できます。デフォルトでは、すべてのデータ列が返されます。

  • Tablestore が1回の呼び出しで返す最大行数を指定します。

クエリ方法

Tablestore コンソール、CLI、または SDK を使用して時系列データに対してクエリを実行できます。

説明

サポートされる機能は、時系列データのクエリに使用するメソッドによって異なります。

時系列データに対してクエリを実行するには、クエリを実行する時系列の識別子を指定する必要があります。

Tablestore コンソールの使用

Tablestore コンソールを使用して、特定の期間内の時系列データに対してクエリを実行できます。

  1. インスタンス管理 ページに移動します。

    1. Tablestore コンソール にログインします。

    2. 上部のナビゲーションバーで、リソースグループとリージョンを選択します。

    3. 概要ページで、管理するインスタンスの名前をクリックするか、インスタンスの[アクション]列のインスタンスの管理をクリックします。

  2. インスタンスの詳細 タブの下部にある 時系列テーブル タブをクリックします。

  3. 時系列テーブル タブで、管理する時系列テーブルを見つけ、操作 列の クエリ をクリックします。

  4. データのクエリ タブで、管理する時系列を見つけ、操作 列の データのクエリ をクリックします。

  5. クエリ条件を指定します。

    1. デフォルトでは、クエリ結果は時系列順にソートされます。クエリ結果を逆時系列順にソートするには、逆時系列順 パラメータを はい に設定します。

    2. 検索方法を選択し、期間を指定します。

  6. 検索 をクリックします。

    条件を満たすデータが データのクエリ タブに表示されます。クエリ結果は、リストまたは図で表示できます。

    クエリ結果をリストで表示する

    image

    クエリ結果を図で表示する

    image

Tablestore CLI の使用

Tablestore CLI を使用して、特定の期間内の時系列データに対してクエリを実行できます。

getts コマンドを実行して、特定の期間内の時系列データに対してクエリを実行します。詳細については、時系列データのクエリ を参照してください。

次のサンプルコードは、メトリック名が cpu、データソースが localhost、タグが "region=hangzhou" および "os=ubuntu" である時系列において、0 から 1667638230000000 までの期間内に生成された時系列データに対してクエリを実行する方法の例を示しています。この例では、クエリ結果は時系列順にソートされ、最大 100 件の時系列データが返されます。

getts --k '["cpu","localhost",["region=hangzhou","os=ubuntu"]]' --time_start 0 --time_end 1667638230000000 --limit 100

Tablestore SDK の使用

Tablestore SDK for Java および Tablestore SDK for Go を使用して、特定の期間内の時系列データに対してクエリを実行できます。この例では、Tablestore SDK for Java を使用します。

次のサンプルコードは、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);
    // オプション。クエリ結果を逆時系列順にソートするかどうかを指定します。デフォルト値:false。このパラメータを true に設定すると、クエリ結果は逆時系列順にソートされます。
    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());
    }
}

FAQ

参照