通过SDK创建时序表后,您可以将时序数据写入表格存储。本文介绍如何通过表格存储SDK创建时序表以及将时序数据写入时序表。
背景信息
表格存储的时序模型针对时间序列数据的特点进行设计,适用于物联网设备监控、设备采集数据、机器监控数据等场景。更多信息,请参见时序模型概述。
步骤一:创建时序表
使用CreateTimeseriesTable创建时序表时,需要指定表的配置信息。
- 参数
时序表的结构信息(timeseriesTableMeta)包括表名(timeseriesTableName)和配置信息(timeseriesTableOptions)的配置,详细参数说明请参见下表。
参数 说明 timeseriesTableName 时序表名。 timeseriesTableOptions 时序表的配置信息,包括如下内容: timeToLive:配置时序表的数据存活时间,单位为秒。如果希望数据永不过期,可以设置为-1。您可以通过UpdateTimeseriesTable接口修改。
- 示例
创建test_timeseries_table时序表,且该表中数据永不过期。
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); client.createTimeseriesTable(request); }
步骤二:将时序数据写入时序表
使用PutTimeseriesData接口,您可以批量写入时序数据。一次PutTimeseriesData调用可以写入多行数据。
- 参数
一行时序数据(timeseriesRow)包括时间线标识(timeseriesKey)和时间线数据的配置,其中时间线数据包括数据点的时间(timeInUs)和数据点(fields)。详细参数说明请参见下表。
参数 说明 timeseriesKey 时间线标识,包括如下内容: - measurementName:时间线的度量名称。
- dataSource:数据源信息,可以为空。
- tags:时间线的标签信息,为多个字符串的key-value对。
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()); } } }
使用SDK
您可以通过如下语言的SDK使用时序模型。