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

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

最終更新日:Apr 23, 2025

GetTimeseriesData 操作を呼び出すことで、特定の条件を満たす時系列データをクエリできます。

前提条件

クライアントが初期化されていること。詳細については、「Tablestore クライアントを初期化する」をご参照ください。

パラメーター

次の表は、request に含まれるパラメーターについて説明しています。

パラメーター

説明

timeseriesTableName (必須)

時系列テーブルの名前。

timeseriesKey (必須)

時系列の識別子。このパラメーターには、次の設定項目が含まれます。

  • measurement_name (必須): 時系列のメトリック名。

  • data_source (必須): データソース情報。

  • tags (必須): 時系列のタグ情報。複数のキーと値のペアで構成されます。

beginTimeInUs (オプション)

クエリ対象の期間 (マイクロ秒単位)。デフォルト値: 0。

beginTimeInUs と endTimeInUs は、それぞれ開始タイムスタンプと終了タイムスタンプを指定します。クエリの時間範囲は、左閉右開区間です。

endTimeInUs (オプション)

backward (オプション)

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

  • True: クエリ結果を逆時系列順にソートします。

  • False (デフォルト): クエリ結果を逆時系列順にソートしません。

fieldsToGet (オプション)

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

重要

fieldsToGet パラメーターを使用して、取得する各列の名前とデータ型を明示的に指定する必要があります。データ型が実際のデータ型と一致しない場合、列のデータを読み取ることができません。

limit (オプション)

このリクエストで返される最大行数。デフォルト値: 5000。有効値: (0,5000]

説明

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

nextToken (オプション)

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

重要

nextToken を永続化したり、フロントエンドページに転送したりする場合は、Base64 を使用して nextToken を文字列にエンコードできます。 nextToken 自体は文字列ではありません。 str(nextToken) を直接使用してトークンを文字列としてエンコードすると、トークン情報が失われます。

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

# 時系列のタグ情報。
tags = {"tag1": "t1", "tag2": "t2"}
# 時系列の識別子。
key = TimeseriesKey("measure1", "datasource1", tags)

try:
    request = GetTimeseriesDataRequest("")
    # 時系列の識別子。
    request.timeseriesKey = key
    # クエリ対象期間の終了タイムスタンプ。
    request.endTimeInUs = int(time.time() * 1000000)
    # リクエストで返される最大行数。
    request.limit = 20
    # 取得する列。このパラメーターを指定しない場合は、すべての列が返されます。
    request.fieldsToGet = {"string_field": DataType.STRING, "long_field": DataType.LONG}

    # 操作を呼び出して、時系列データをクエリします。
    response = ots_client.get_timeseries_data(request)
    print(response.rows)

    # nextToken が空でない場合は、次のリクエストを開始できます。
    if response.nextToken is not None:
        # nextToken を取得します。
        next_token = response.nextToken

        # nextToken を永続化したり、フロントエンドページに転送したりする場合は、Base64 を使用して nextToken を文字列にエンコードして保存および転送できます。
        # トークン自体は文字列ではありません。 str(nextToken) を直接使用してトークンを文字列としてエンコードすると、トークン情報が失われます。
        token_as_string = base64.b64encode(next_token).decode('utf-8')
        # 文字列をバイトにデコードします。
        next_token_byte = base64.b64decode(token_as_string.encode('utf-8'))

        # 操作を呼び出して、時系列データをクエリします。
        request.nextToken = next_token
        response = ots_client.get_timeseries_data(request)
        print(response.rows)
    print("get timeseries data succeeded.") # 時系列データの取得に成功しました。
except Exception as e:
    # 例外がスローされた場合、呼び出しは失敗します。例外を処理します。
    print("get timeseries data failed. %s" % e) # 時系列データの取得に失敗しました。