SDK数据接入

通过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());
        }
    }
}

常见问题