您可以使用规则引擎数据流转功能,将数据转发到表格存储(Tablestore)时序模型中。本文以物模型数据上报Topic为例,介绍流转消息数据的完整流程。

前提条件

  • 已创建数据源DataSource,并添加物模型数据上报Topic。具体步骤,请参见添加待流转的数据源
  • 已创建表格存储实例和用于接收数据的数据表。表格存储使用方法,请参见表格存储时序模型文档
    重要 企业版实例中,表格存储实例所在地域,必须与企业版实例所在地域一致。

背景信息

表格存储时序模型:针对时间序列数据的特点进行设计的模型,可应用于物联网设备监控、设备采集数据、机器监控数据等场景,支持自动构建时序元数据索引、丰富的时序查询能力等功能。更多信息,请参见时序模型

将物联网平台设备上报数据转发到表格存储中的详细说明,请参见物联网存储介绍

本文示例中,写入时序表的数据如下:
  • fields:使用JSONPath方法,获取设备上报的物模型属性Temperature和Humidity的值,写入温度、湿度的时序数据。
  • timeInUs:使用函数timestamp()获取设备上报数据的当前时间戳(单位为毫秒)。timeInUs的时间单位为微秒,写入时间值为timestamp()*1000
  • tags:写入标签{"region": "cn-shanghai"}
  • metricName:写入时间线度量名称property
  • dataSource:使用函数deviceName()获取设备名称,写入数据源标识。

使用限制

目前,仅华东2(上海)、华北2(北京)、华南1(深圳)、新加坡、日本(东京)地域的企业版实例下,新版云产品流转功能支持将数据流转到表格存储(Tablestore)时序模型中。

创建数据目的

  1. 登录物联网平台控制台
  2. 实例概览页面,找到对应的实例,单击实例进入实例详情页面。
    选择实例
  3. 在左侧导航栏,选择消息转发 > 云产品流转
  4. 可选:云产品流转页面,单击右上角体验新版,进入新版功能页面。
    说明 如果您已执行过此操作,再次进入 云产品流转页面,会直接进入新版功能页面。
  5. 单击数据目的页签,然后单击创建数据目的
  6. 创建数据目的对话框,输入数据目的名称,例如DataPurpose,按照以下参数说明,完成配置,然后单击确定
    说明 仅支持转发JSON格式数据。
    参数 说明
    选择操作 选择存储到表格存储(Tablestore)
    地域 选择表格存储所在地域。
    实例 择表格存储实例。

    您可以单击创建实例,跳转到表格存储控制台,创建时序模型实例,请参见创建时序模型实例

    存储类型 选择时序模型
    数据表 选择接收数据的表格存储时序数据表。

    您可以单击创建数据表,跳转到表格存储控制台,创建时序数据表,请参见创建时序表

    角色 授权物联网平台将数据写入时序表格存储。

    如您还未创建相关角色,单击创建RAM角色,跳转到RAM控制台,创建角色和授权策略,请参见创建RAM角色

配置并启动解析器

  1. 创建解析器,例如DataParser。具体操作,请参见创建解析器
  2. 解析器详情页面,关联数据源。
    1. 在配置向导的数据源下,单击关联数据源
    2. 在弹出的对话框中,单击数据源下拉列表,选择已创建的数据源DataSource,单击确定
  3. 解析器详情页面,关联数据目的。
    1. 单击配置向导的数据目的,然后单击数据目的列表右上方的关联数据目的
    2. 在弹出的对话框中,单击数据目的下拉列表,选择已创建的数据目的DataPurpose,单击确定
    3. 在数据目的列表,查看并保存数据目的ID,例如为1000
      后续解析脚本中,需使用此处的 数据目的ID
  4. 解析器详情页面,单击解析器
  5. 在脚本输入框,输入解析脚本。脚本编辑方法,请参见脚本示例
    函数参数说明,请参见函数列表
    //通过payload函数,获取设备上报的消息内容,并按照JSON格式转换。
    var data = payload("json");
    //获取上报的属性值。
    var h = data.items.Humidity.value;
    var t = data.items.Temperature.value;
    
    var datasource = deviceName();
    var fields = {"temperature":t, "humidity":h};
    var tags = {};
    tags.put("region", "cn-shanghai");
    var metricName = "property";
    var timeInUs = timestamp()*1000;
    
    // 在writeTableStoreTS方法中,按时间线,将温湿度值写入对应的列。
    writeTableStoreTs(1000, timeInUs, metricName, tags, fields, datasource);

    您也可设置温度、湿度分别为度量名称,写入温湿度数据,函数表达式如下:

    writeTableStoreTs(1000, [
        {
            "timeInUs": timestamp() * 1000,
            "metricName": "温度",
            "tags":tags,
            "fields":{"temperature": t},
            "dataSource": deviceName()
        },
        {
            "timeInUs": timestamp() * 1000,
            "metricName": "湿度",
            "tags":tags,
            "fields":{"humidity": h},
            "dataSource": deviceName()
        },
    ]);
  6. 单击调试,根据页面提示,选择产品和设备,输入Topic和Payload数据,验证脚本可执行。
    参数示例如下: 调试数据
    运行结果如下,表示脚本执行成功。 运行结果
  7. 单击发布
  8. 回到云产品流转页面的解析器页签,单击解析器DataParser对应的启动按钮,启动解析器。
  9. 数据推送成功后,在表格存储接收数据的数据表的数据管理页签,查看是否成功接收到指定数据,请参见查询时序数据
    您可通过SQL查询功能,对表格存储中数据进行复杂的查询和高效的分析。具体操作,请参见 使用SQL查询时序数据数据管理