写入时序数据

更新时间:
复制 MD 格式

使用 Java SDK 批量写入时序数据,并获取写入失败行的错误信息。

前提条件

安装Tablestore Java SDK并初始化时序模型客户端。

功能说明

调用 putTimeseriesData 方法向时序表写入一行或多行时序数据。每行数据由时间线标识、数据点时间和数据字段组成;响应会返回写入失败的行及其错误信息。

public PutTimeseriesDataResponse putTimeseriesData(PutTimeseriesDataRequest request) throws TableStoreException, ClientException

以下示例向 example_timeseries_table 写入同一时间线的 3 个数据点,并检查各行的写入结果。

TimeseriesClient timeseriesClient = client.asTimeseriesClient();

String tableName = "example_timeseries_table";
List<TimeseriesRow> rows = new ArrayList<>();

Map<String, String> tags = new HashMap<>();
tags.put("region", "cn-hangzhou");
tags.put("host", "host_0");
TimeseriesKey timeseriesKey = new TimeseriesKey("cpu", "source_0", tags);

long baseTimeInUs = System.currentTimeMillis() * 1000L;
for (int i = 0; i < 3; i++) {
    TimeseriesRow row = new TimeseriesRow(timeseriesKey, baseTimeInUs + i * 1000L);
    row.addField("cpu_usage", ColumnValue.fromDouble(10.0 + i));
    row.addField("status", ColumnValue.fromString("ok"));
    rows.add(row);
}

PutTimeseriesDataRequest request = new PutTimeseriesDataRequest(tableName);
request.setRows(rows);
PutTimeseriesDataResponse response = timeseriesClient.putTimeseriesData(request);

for (PutTimeseriesDataResponse.FailedRowResult result : response.getFailedRows()) {
    System.out.println(result.getIndex());
    System.out.println(result.getError());
}

参数说明

PutTimeseriesDataRequest 包含以下参数。

名称

类型

说明

timeseriesTableName(必选)

String

时序表名称。

rows(必选)

List<TimeseriesRow>

要写入的时序数据行列表。

metaUpdateMode(可选)

PutTimeseriesDataRequest.MetaUpdateMode

时间线元数据更新模式。默认值为 NORMAL,由服务端判断是否更新时间线元数据索引。设置为 IGNORE 时,本次写入不更新时间线元数据索引,可能影响时间线元数据检索和 SQL 查询。

时序数据行

rows[] 中每个元素的类型为 TimeseriesRow,包含以下参数。

名称

类型

说明

timeseriesKey(必选)

TimeseriesKey

时间线标识。

timeInUs(必选)

long

数据点时间,格式为从 1970-01-01 00:00:00 UTC 开始计算的微秒时间戳,取值大于等于 0

fields(必选)

SortedMap<String, ColumnValue>

数据字段,由一个或多个字段名称和字段值组成。

时间线标识

rows[].timeseriesKey 的类型为 TimeseriesKey,包含以下参数。

名称

类型

说明

measurementName(必选)

String

度量名称。Java SDK 5.17.2 及以上版本支持将其设置为空。

dataSource(可选)

String

数据源标识,可以为空。

tags(可选)

SortedMap<String, String>

标签信息,由字符串类型的键值对组成。未设置时使用空映射。

返回值

PutTimeseriesDataResponse 包含以下业务返回字段。

字段

类型

说明

failedRows

List<PutTimeseriesDataResponse.FailedRowResult>

通过 getFailedRows() 获取写入失败的行。全部写入成功时返回空列表,也可以通过 isAllSuccess() 判断是否全部成功。

失败行信息

failedRows[] 中每个元素的类型为 PutTimeseriesDataResponse.FailedRowResult,包含以下字段。

字段

类型

说明

index

int

通过 getIndex() 获取失败行在请求 rows 列表中的下标。

error

Error

通过 getError() 获取失败原因。