建立時序表後,您可以使用PutTimeseriesData介面批量寫入時序資料。一次PutTimeseriesData調用支援寫入多行資料。
前提條件
已建立時序表。具體操作,請參見建立時序表。
已初始化TimeseriesClient。具體操作,請參見初始化OTSClient。
參數
一行時序資料(timeseriesRow)包括時間軸標識(timeseriesKey)和時間軸資料的配置,其中時間軸資料包括資料點的時間(timeInUs)和資料點(fields)。詳細參數說明請參見下表。
參數 | 說明 |
timeseriesKey | 時間軸標識,包括如下內容:
|
timeInUs | 資料點的時間,單位為微秒。 |
fields | 資料點,可以由多個名稱(FieldKey)和資料值(FieldValue)對組成。 |
樣本
以下樣本用於向test_timeseries_table時序表中寫入多個時序資料。
private static void putTimeseriesData(TimeseriesClient client) {
List<TimeseriesRow> rows = new ArrayList<TimeseriesRow>();
for (int i = 0; i < 10; i++) {
Map<String, String> tags = new HashMap<String, String>();
tags.put("region", "hangzhou");
tags.put("os", "Ubuntu16.04");
// 通過measurementName、dataSource和tags構建TimeseriesKey。
TimeseriesKey timeseriesKey = new TimeseriesKey("cpu", "host_" + i, tags);
// 指定timeseriesKey和timeInUs建立timeseriesRow。
TimeseriesRow row = new TimeseriesRow(timeseriesKey, System.currentTimeMillis() * 1000 + i);
// 增加資料值(field)。
row.addField("cpu_usage", ColumnValue.fromDouble(10.0));
row.addField("cpu_sys", ColumnValue.fromDouble(5.0));
rows.add(row);
}
String tableName = "test_timeseries_table";
PutTimeseriesDataRequest putTimeseriesDataRequest = new PutTimeseriesDataRequest(tableName);
putTimeseriesDataRequest.setRows(rows);
// 一次寫入多行時序資料。
PutTimeseriesDataResponse putTimeseriesDataResponse = client.putTimeseriesData(putTimeseriesDataRequest);
// 檢查是否全部成功。
if (!putTimeseriesDataResponse.isAllSuccess()) {
for (PutTimeseriesDataResponse.FailedRowResult failedRowResult : putTimeseriesDataResponse.getFailedRows()) {
System.out.println(failedRowResult.getIndex());
System.out.println(failedRowResult.getError());
}
}
}