使用 Java SDK 按度量名稱、資料來源、標籤、屬性或更新時間檢索時間軸中繼資料,並支援組合條件和分頁讀取。
前提條件
安裝Tablestore Java SDK並初始化時序模型用戶端。
功能說明
調用 queryTimeseriesMeta 方法檢索時序表中的時間軸中繼資料。不設定查詢條件時返回全部時間軸中繼資料;設定查詢條件時,可以按一個或多個時間軸特徵篩選。
public QueryTimeseriesMetaResponse queryTimeseriesMeta(QueryTimeseriesMetaRequest request) throws TableStoreException, ClientException
服務端會為新時間軸非同步構建中繼資料索引。寫入新的時間軸後,需等待索引構建完成才能檢索到對應中繼資料。
以下樣本檢索 example_timeseries_table 中度量名稱為 cpu、且 os 標籤值以 Ubuntu 開頭的時間軸中繼資料。
CompositeMetaQueryCondition condition =
new CompositeMetaQueryCondition(MetaQueryCompositeOperator.OP_AND);
condition.addSubCondition(new MeasurementMetaQueryCondition(
MetaQuerySingleOperator.OP_EQUAL, "cpu"));
condition.addSubCondition(new TagMetaQueryCondition(
MetaQuerySingleOperator.OP_PREFIX, "os", "Ubuntu"));
QueryTimeseriesMetaRequest request =
new QueryTimeseriesMetaRequest("example_timeseries_table");
request.setCondition(condition);
request.setGetTotalHits(true);
request.setLimit(100);
QueryTimeseriesMetaResponse response =
timeseriesClient.queryTimeseriesMeta(request);
System.out.println(response.getTotalHits());
for (TimeseriesMeta meta : response.getTimeseriesMetas()) {
System.out.println(meta);
}
參數說明
QueryTimeseriesMetaRequest 包含以下參數。
|
名稱 |
類型 |
說明 |
|
timeseriesTableName(必選) |
|
時序表名稱。 |
|
condition(可選) |
|
時間軸中繼資料檢索條件。不設定時返回全部時間軸中繼資料。 |
|
getTotalHits(可選) |
|
是否返回合格時間軸中繼資料總數。預設值為 |
|
limit(可選) |
|
單次請求最多返回的時間軸中繼資料條數。僅正值生效;實際返回條數可能小於該值。 |
|
nextToken(可選) |
|
分頁令牌。首次請求不設定;響應中的 |
condition 可以使用以下查詢條件類型。字串查詢條件支援 OP_EQUAL、OP_GREATER_THAN、OP_GREATER_EQUAL、OP_LESS_THAN、OP_LESS_EQUAL 和 OP_PREFIX;更新時間查詢條件不支援 OP_PREFIX。
組合查詢條件
condition 的類型為 CompositeMetaQueryCondition 時,包含以下參數。
|
名稱 |
類型 |
說明 |
|
operator(必選) |
|
邏輯運算子,取值為 |
|
subConditions(必選) |
|
要組合的子條件列表,不可為空。子條件也可以是組合查詢條件。 |
度量名稱查詢條件
condition 的類型為 MeasurementMetaQueryCondition 時,包含以下參數。
|
名稱 |
類型 |
說明 |
|
operator(必選) |
|
查詢運算子。 |
|
value(必選) |
|
要匹配的度量名稱。 |
資料來源查詢條件
condition 的類型為 DataSourceMetaQueryCondition 時,包含以下參數。
|
名稱 |
類型 |
說明 |
|
operator(必選) |
|
查詢運算子。 |
|
value(必選) |
|
要匹配的資料來源標識。 |
標籤查詢條件
condition 的類型為 TagMetaQueryCondition 時,包含以下參數。
|
名稱 |
類型 |
說明 |
|
operator(必選) |
|
查詢運算子。 |
|
tagName(必選) |
|
要匹配的標籤名稱,不可為空。 |
|
value(必選) |
|
要匹配的標籤值。 |
屬性查詢條件
condition 的類型為 AttributeMetaQueryCondition 時,包含以下參數。
|
名稱 |
類型 |
說明 |
|
operator(必選) |
|
查詢運算子。 |
|
attributeName(必選) |
|
要匹配的屬性名稱,不可為空。 |
|
value(必選) |
|
要匹配的屬性值。 |
更新時間查詢條件
condition 的類型為 UpdateTimeMetaQueryCondition 時,包含以下參數。
|
名稱 |
類型 |
說明 |
|
operator(必選) |
|
查詢運算子,取值為 |
|
timeInUs(必選) |
|
時間軸中繼資料的最後更新時間,格式為從 1970-01-01 00:00:00 UTC 開始計算的微秒時間戳記。 |
傳回值
QueryTimeseriesMetaResponse 包含以下業務返回欄位。
|
欄位 |
類型 |
說明 |
|
|
|
通過 |
|
|
|
通過 |
|
|
|
通過 |
時間軸中繼資料
timeseriesMetas[] 中每個元素的類型為 TimeseriesMeta,包含以下欄位。
|
欄位 |
類型 |
說明 |
|
|
|
通過 |
|
|
|
通過 |
|
|
|
通過 |
時間軸標識
timeseriesMetas[].timeseriesKey 的類型為 TimeseriesKey,包含以下欄位。
|
欄位 |
類型 |
說明 |
|
|
|
通過 |
|
|
|
通過 |
|
|
|
通過 |
情境樣本
分頁讀取全部中繼資料
當響應中的 nextToken 不為 null 時,重複傳入該令牌,直至全部結果返回。
List<TimeseriesMeta> allMetas = new ArrayList<>();
byte[] nextToken = null;
do {
request.setNextToken(nextToken);
QueryTimeseriesMetaResponse response =
timeseriesClient.queryTimeseriesMeta(request);
allMetas.addAll(response.getTimeseriesMetas());
nextToken = response.getNextToken();
} while (nextToken != null);