使用 Java SDK 批量更新时间线元数据的属性,并获取更新失败行的错误信息。
前提条件
-
安装Tablestore Java SDK并初始化时序模型客户端。
-
目标时序表允许更新时间线元数据属性。如果未允许,请先更新时序表配置,将
allowUpdateAttributes设置为true。
功能说明
调用 updateTimeseriesMeta 方法批量更新时间线元数据属性。如果指定的时间线元数据不存在,服务端会新增该元数据。
public UpdateTimeseriesMetaResponse updateTimeseriesMeta(UpdateTimeseriesMetaRequest request) throws TableStoreException, ClientException
时间线元数据索引异步更新。提交更新后,需等待索引更新完成才能检索到最新属性。
以下示例将 example_timeseries_table 中指定时间线的 status 属性更新为 online,并检查失败行。
Map<String, String> tags = new HashMap<>();
tags.put("region", "cn-hangzhou");
tags.put("host", "host_0");
TimeseriesKey timeseriesKey =
new TimeseriesKey("cpu", "source_0", tags);
Map<String, String> attributes = new HashMap<>();
attributes.put("status", "online");
TimeseriesMeta meta = new TimeseriesMeta(timeseriesKey);
meta.setAttributes(attributes);
UpdateTimeseriesMetaRequest request =
new UpdateTimeseriesMetaRequest("example_timeseries_table");
request.setMetas(Collections.singletonList(meta));
UpdateTimeseriesMetaResponse response =
timeseriesClient.updateTimeseriesMeta(request);
for (UpdateTimeseriesMetaResponse.FailedRowResult result : response.getFailedRows()) {
System.out.println(result.getIndex());
System.out.println(result.getError());
}
参数说明
UpdateTimeseriesMetaRequest 包含以下参数。
|
名称 |
类型 |
说明 |
|
timeseriesTableName(必选) |
|
时序表名称。 |
|
metas(必选) |
|
要更新的时间线元数据列表,不能为空。可以在一次请求中更新多条元数据。 |
时间线元数据
metas[] 中每个元素的类型为 TimeseriesMeta,包含以下参数。
|
名称 |
类型 |
说明 |
|
timeseriesKey(必选) |
|
要更新的时间线标识。 |
|
attributes(可选) |
|
要设置的元数据属性,由字符串类型的键值对组成。未设置或设置为空映射时,Java SDK 不发送属性内容。 |
updateTimeInUs 由服务端生成,是检索时间线元数据时的返回字段。更新时间线元数据时不要设置该字段,否则 Java SDK 会拒绝请求。
时间线标识
metas[].timeseriesKey 的类型为 TimeseriesKey,包含以下参数。
|
名称 |
类型 |
说明 |
|
measurementName(必选) |
|
度量名称。Java SDK 5.17.2 及以上版本支持将其设置为空。 |
|
dataSource(可选) |
|
数据源标识,可以为空。 |
|
tags(可选) |
|
标签信息,由字符串类型的键值对组成。未设置时使用空映射。 |
返回值
UpdateTimeseriesMetaResponse 包含以下业务返回字段。
|
字段 |
类型 |
说明 |
|
|
|
通过 |
失败行信息
failedRows[] 中每个元素的类型为 UpdateTimeseriesMetaResponse.FailedRowResult,包含以下字段。
|
字段 |
类型 |
说明 |
|
|
|
通过 |
|
|
|
通过 |