使用您购买的实例时,可以配置数据流转规则,将数据转发到实例内的时序数据存储中存储。

限制说明

  • 仅华东2(上海)、华南1(深圳)地域支持实例内的时序数据存储,实例内的时序数据存储详情请参见时序数据存储管理
  • 只支持JSON格式数据转发。
  • 转发的消息中,除了配置的timestamptag字段外,其他字段都将作为metric写入时序数据存储。metric的值只能为数值类型,否则会导致写入失败。

前提条件

在设置转发之前,请参见设置数据流转规则,创建数据转发规则和编写处理数据的SQL。

操作步骤

  1. 登录物联网平台控制台
  2. 在左侧导航栏,选择规则引擎 > 云产品流转
  3. 单击规则对应的查看,进入数据流转规则页。
  4. 单击转发数据一栏对应的添加操作
  5. 添加操作对话框中,选择操作为存储到实例内的时序数据存储中
  6. 按照界面提示,设置其他信息,单击确定
    添加操作
    参数 描述
    选择操作 选择存储到实例内的时序数据存储中
    timestamp 时间戳。支持:
    • 使用转义符${}表达式,例如${time},表示取值为数据源Topic消息中time字段对应的值。
    • 使用数据流转函数timestamp(),表示取值为数据流转服务器的时间戳。
    • 输入值,必须为Unix时间戳,例如1404955893000。
    tag 设置标记数据的标签名。支持中文汉字、英文字母、数字、和特殊字符,包括:半角冒号(:)、逗号(,)、点号 (.)、单引号(')、正斜线(/)、连字符(-)、下划线(_)、圆括号()、方括号[]。
    设置标签值。支持:
    • 使用转义符${}表达式。例如,数据源Topic的消息结构中,包含一个位置属性,标识符为city,则可以指定标签值为${city},表示消息中city字段对应的值。建议使用此方式。
    • 使用数据流转函数规定的一些函数,例如deviceName(),表示标签值为设备名称。支持的函数,请参见函数列表
    • 输入常量,例如beijing。支持输入中文汉字、英文字母、数字、和特殊字符包括:半角冒号(:)、逗号(,)、点号 (.)、单引号(')、正斜线(/)、连字符(-)、下划线(_)、圆括号()、方括号[]。
    说明
    • 最多可添加8个tag键值对。
    • 需保证时序数据存储能够获取到配置的tag键值对,如果获取不到任意一个tag键值对,会导致写入数据库失败。
  7. 回到云产品流转页,单击规则对应的启动按钮启动规则。

数据流转示例

某规则的SQL如下:

SELECT time,city,power,distance, FROM "/alprodu****/myDevice/user/update";

规则引擎根据SQL处理数据和写入数据到时序数据存储如下。

  1. 根据该SQL,规则引擎从Topic /alprodu****/myDevice/user/update的消息中,筛选出timecitypowerdistance字段内容,作为转发的消息内容。

    通过以上SQL处理后的转发消息内容示例如下:

    {
    "time": 1513677897,
    "city": "beijing",
    "distance": 8545,
    "power": 93.0
    }
  2. 根据已配置的数据流转操作,规则引擎向时序数据存储中写入两条数据。

    示例中写入时序数据存储的数据如下:

    • 数据: timestamp:1513677897, [metric:power value:93.0]
      tag: cityName=beijing
    • 数据: timestamp:1513677897, [metric:distance value:8545]
      tag: cityName=beijing

查询时序数据

您可以使用SDK查询已写入实例内时序数据存储的数据。

  1. 获取SDK。
    使用Maven做项目构建工具,在pom.xml文件的<dependencies>标签中添加hitsdb-client依赖。代码如下:
    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>hitsdb-client</artifactId>
        <version>0.2.7</version>
    </dependency>
    说明 SDK版本号必须为0.2.7及以上。
  2. 配置客户端。
    客户端的所有配置均由TSDBConfig类进行配置。示例代码如下:
    //实例详情页面中的连接地址、端口。
    String connectString = "XXX";
    int port = XXX;
    //实例详情页面中的时序数据存储用户名、密码。
    String username = "XXX";
    String password = "XXXX";
    TSDBConfig config = TSDBConfig.address(connectString, port)
        .basicAuth(username, password)
        // 网络连接池大小,默认为64。
        .httpConnectionPool(64)
        // HTTP 等待时间,单位为秒,默认为90秒。
        .httpConnectTimeout(90)
        // IO 线程数,默认为1。
        .ioThreadCount(1)
        .config();
  3. 查询数据。
    示例代码如下:
    TSDB tsdbClient = TSDBClientFactory.connect(config);
    //按标签筛选数据。
    Map<String, String> tags = new HashMap<>();
    String metric = "XXX";
    long now = System.currentTimeMillis();
    LastPointQuery query = LastPointQuery.builder()
        .timestamp(now)
        .backScan(-1)
        .msResolution(true)
        .sub(LastPointSubQuery.builder(metric, tags).build()).build();
    List<LastDataValue> lastDataValues = tsdbClient.queryLast(query);
    
    System.out.println(lastDataValues);
说明 SDK不能用于将数据写入实例内的时序数据存储。