通過調用GetTimeseriesData介面,您可以查詢符合指定條件的時序資料。
前提條件
參數說明
request
包含以下參數:
參數 | 說明 |
timeseriesTableName(必選) | 時序表名稱。 |
timeseriesKey(必選) | 時間軸標識。包括如下內容:
|
beginTimeInUs(可選) | 要查詢的時間範圍,單位為微秒。預設值為0。 beginTimeInUs和endTimeInUs分別表示起始時間戳記和結束時間戳記,查詢的時間範圍為左閉右開的區間。 |
endTimeInUs(可選) | |
backward(可選) | 是否按照時間倒序讀取資料,可用於擷取某條時間軸的最新資料。取值範圍如下:
|
fieldsToGet(可選) | 要擷取的資料列。如果不指定,則預設擷取所有列。 重要 在fieldsToGet中,需要明確指定要擷取的每一列的列名及其資料類型。如果資料類型與實際不匹配,則將無法讀取該列的資料。 |
limit(可選) | 本次請求最多返回的行數。預設值為5000,取值範圍為 說明 limit僅限制最多返回的行數,在滿足條件行數大於limit時,也可能由於掃描資料量等限制導致返回行數少於limit條,此時可以通過nextToken繼續擷取後面的行。 |
nextToken(可選) | 如果一次查詢僅返回了部分合格行,此時response中會包括nextToken,可在下一次請求中指定nextToken用來繼續讀取資料。 重要 如果需要持久化nextToken或者傳輸nextToken給前端頁面,您可以使用Base64編碼將nextToken編碼為String後進行儲存或傳輸。nextToken本身不是字串,如果直接使用 |
樣本
以下樣本用於查詢時序表中滿足指定條件的時序資料。
# 時間軸的標籤資訊。
tags = {"tag1": "t1", "tag2": "t2"}
# 時間軸標識。
key = TimeseriesKey("measure1", "datasource1", tags)
try:
request = GetTimeseriesDataRequest("<TIMESERIES_TABLE_NAME>")
# 時間軸標識
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或者傳輸nextToken給前端頁面,您可以使用Base64編碼將nextToken編碼為String進行儲存和傳輸。
# token本身不是字串,直接使用str(nextToken)將token編碼為String會造成token資訊丟失。
token_as_string = base64.b64encode(next_token).decode('utf-8')
# 將String解碼為byte。
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)