通过SDK创建时序表后,您可以将时序数据写入表格存储。本文介绍如何通过表格存储SDK创建时序表以及将时序数据写入时序表。
背景信息
表格存储的时序模型针对时间序列数据的特点进行设计,适用于物联网设备监控、设备采集数据、机器监控数据等场景。更多信息,请参见时序模型介绍。
使用SDK
您可以通过如下语言的SDK使用时序模型。本文Java SDK为例介绍时序模型的使用。
步骤一:创建时序表
当使用表格存储时序模型时,您需要使用CreateTimeseriesTable接口创建时序表用于存储时序数据。
说明
如果需要低成本存储时序数据以及快速查询和分析时序数据,您可以为时序表创建分析存储。分析存储功能主要用于时序数据长期存储和分析场景。更多信息,请参见时序分析存储概述。
以下示例用于创建test_timeseries_table时序表,且该表中数据永不过期。时序表的结构信息,请参见TimeseriesTableMeta。
private static void createTimeseriesTable(TimeseriesClient client) {
String tableName = "test_timeseries_table";
TimeseriesTableMeta timeseriesTableMeta = new TimeseriesTableMeta(tableName);
int timeToLive = -1;
timeseriesTableMeta.setTimeseriesTableOptions(new TimeseriesTableOptions(timeToLive));
CreateTimeseriesTableRequest request = new CreateTimeseriesTableRequest(timeseriesTableMeta);
//不创建默认分析存储。
request.setEnableAnalyticalStore(false);
client.createTimeseriesTable(request);
}
步骤二:写入时序数据
您可以使用PutTimeseriesData接口批量写入时序数据到时序表。一次PutTimeseriesData调用可以写入多行数据。
以下示例用于向test_timeseries_table时序表中写入多个时序数据。时序数据的结构信息,请参见TimeseriesRows。
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());
}
}
}
常见问题
文档内容是否对您有帮助?