GetTimeseriesData 操作を呼び出すことで、特定の条件を満たす時系列データをクエリできます。
前提条件
クライアントが初期化されていること。詳細については、「Tablestore クライアントを初期化する」をご参照ください。
パラメーター
次の表は、request に含まれるパラメーターについて説明しています。
パラメーター | 説明 |
timeseriesTableName (必須) | 時系列テーブルの名前。 |
timeseriesKey (必須) | 時系列の識別子。このパラメーターには、次の設定項目が含まれます。
|
beginTimeInUs (オプション) | クエリ対象の期間 (マイクロ秒単位)。デフォルト値: 0。 beginTimeInUs と endTimeInUs は、それぞれ開始タイムスタンプと終了タイムスタンプを指定します。クエリの時間範囲は、左閉右開区間です。 |
endTimeInUs (オプション) | |
backward (オプション) | クエリ結果を逆時系列順にソートするかどうかを指定します。このパラメーターを使用すると、時系列の最新データを取得できます。有効値:
|
fieldsToGet (オプション) | 取得する列。このパラメーターを指定しない場合は、すべての列がクエリされます。 重要 fieldsToGet パラメーターを使用して、取得する各列の名前とデータ型を明示的に指定する必要があります。データ型が実際のデータ型と一致しない場合、列のデータを読み取ることができません。 |
limit (オプション) | このリクエストで返される最大行数。デフォルト値: 5000。有効値: 説明 limit パラメーターは、返される最大行数のみを制限します。指定された条件を満たす行数が limit を超えていても、スキャンの最大データ量などの他の制限により、返される行数が limit パラメーターの値よりも少ない場合があります。この場合、nextToken パラメーターを使用して残りの行を取得できます。 |
nextToken (オプション) | クエリで指定された条件を満たす行の一部のみが返された場合、応答には nextToken パラメーターが含まれます。次のリクエストで nextToken パラメーターを指定して、残りの行を取得できます。 重要 nextToken を永続化したり、フロントエンドページに転送したりする場合は、Base64 を使用して nextToken を文字列にエンコードできます。 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) # 時系列データの取得に失敗しました。