創建時序表后,您可以使用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());
}
}
}
文檔內容是否對您有幫助?