使用UpdateTimeseriesMeta介面,您可以批次更新時間軸中繼資料的屬性。一次UpdateTimeseriesMeta調用支援更新多個時間軸的中繼資料。
說明
API介面說明請參見UpdateTimeseriesMeta。
前提條件
已寫入時序資料。具體操作,請參見寫入時序資料。
已初始化TimeseriesClient。具體操作,請參見初始化OTSClient。
介面
public class UpdateTimeseriesMetaRequest implements Request {
/** 時序表名稱。*/
private final String timeseriesTableName;
/** 時間軸中繼資料。*/
private List<TimeseriesMeta> metas = new ArrayList<TimeseriesMeta>();
}
public class TimeseriesMeta {
/** 時間軸中繼資料標識。*/
private TimeseriesKey timeseriesKey;
/** 時間軸中繼資料屬性。*/
private SortedMap<String, String> attributes = new TreeMap<String, String>();
/** 時間軸中繼資料生命週期。*/
private long updateTimeInUs = -1;
}
public class TimeseriesKey implements Comparable<TimeseriesKey> {
/** 度量名稱。*/
private final String measurementName;
/** 資料來源名稱。*/
private final String dataSource;
/** 標籤資訊。*/
private final SortedMap<String, String> tags = new TreeMap<String, String>();
private String tagsString;
}
參數
timeseriesMeta表示一個時間軸中繼資料,每個timeseriesMeta包括timeseriesKey和attributes。詳細參數說明請參見下表,
參數 | 描述 |
timeseriesKey | 時間軸標識。 |
attributes | 時間軸的屬性資訊,內容為字串類型的key-value對。 |
樣本
以下樣本用於更新指定時序表中時間軸的屬性資訊。
private static void updateTimeseriesMeta(TimeseriesClient client) {
List<TimeseriesMeta> timeseriesMetaList = new ArrayList<TimeseriesMeta>();
for (int i = 0; i < 10; i++) {
Map<String, String> tags = new HashMap<String, String>();
tags.put("region", "hangzhou");
tags.put("os", "Ubuntu16.04");
// 構造TimeseriesKey。
TimeseriesKey timeseriesKey = new TimeseriesKey("cpu", "host_" + i, tags);
TimeseriesMeta meta = new TimeseriesMeta(timeseriesKey);
// 設定時間軸的屬性值(attributes)。
Map<String, String> attrs = new HashMap<String, String>();
attrs.put("status", "online");
meta.setAttributes(attrs);
timeseriesMetaList.add(meta);
}
// 填寫時序表名稱。
String tableName = "<TIME_SERIES_TABLE>";
UpdateTimeseriesMetaRequest updateTimeseriesMetaRequest = new UpdateTimeseriesMetaRequest(tableName);
updateTimeseriesMetaRequest.setMetas(timeseriesMetaList);
UpdateTimeseriesMetaResponse updateTimeseriesMetaResponse = client.updateTimeseriesMeta(updateTimeseriesMetaRequest);
// 檢查是否全部成功。
if (!updateTimeseriesMetaResponse.isAllSuccess()) {
for (UpdateTimeseriesMetaResponse.FailedRowResult failedRowResult : updateTimeseriesMetaResponse.getFailedRows()) {
System.out.println(failedRowResult.getIndex());
System.out.println(failedRowResult.getError());
}
}
}