阿里云物联网设备数据流转至RDS
最近需要对设备上报的历史数据进行分析。虽然使用阿里云提供的API也可以查到一个月内的历史数据,但也仅仅是一个月内的数据,而且通过API接口每次调取的时候有很多限制(一次调用最多可查询10个属性的历史数据;每个属性最多返回100条数据;仅能查询最近30天内的属性数据),使用起来很不便,因此选择了通过数据流转的功能存入RDS。
配置RDS
数据转发至RDS的注意事项
- 只支持同地域转发,不支持跨地域转发。比如,华东2节点的平台数据只能转发到华东2的RDS数据表中。
- 只支持转发到专有网络RDS实例。
- 支持MySQL实例和SQL Server实例。
- 支持普通数据库和高权限数据库的转发。
- 不支持二进制格式数据转发至RDS。
创建RDS数据库
为了演示整个流程,创建一个按量付费的RDS数据库,选择配置如下:
配置项 | 值 |
---|---|
地域 | [见下方备注信息] |
数据库类型 | 数据库类型:MySQL |
版本 | 5.7 |
系列 | 普通版 |
网络类型 | 专有网络 |
规格 | 1核1GB |
其余未提及的配置项选择默认即可。实际使用时可根据需要采用更高的配置。
截止目前(2019年5月20日)阿里云物联网平台的可选地域只有华东2(上海)节点,因此RDS的地域也必须选择相同配置。不排除物联网平台未来会有其他地域的节点,可提前在物联网平台的控制台中确认服务的地域。
创建数据库及账户
在RDS控制台中查看实例,在数据库管理中创建新数据库;在账号管理中创建新账号,并为该账号赋予新建数据库的访问权限。
创建数据表
在阿里云RDS提供的网页DMS中创建新表,字段名及数据类型需要与对应的物联网产品属性数据类型相同,否则数据可能无法存入。
打开物联网的控制台->设备管理->产品->功能定义->自定义功能,就能看到设备的属性列表。从中筛选出需要转存的属性,在数据表中创建对应的字段即可。
配置转发
打开物联网的控制台->规则引擎->数据流转->创建规则,为新规则命名,选择“json格式”(因为设备上报属性的时候默认就是JSON格式)。
创建完成后就可以编辑规则,编辑界面分三部分处理数据、转发数据、转发错误操作数据。
- 处理数据 : 设备上报的JSON数据可以映射为虚拟的表,其中Key对应表的列,Value对应列值。阿里云提供了一种类试MySQL语法的SQL表达式和一些内置函数,这样就可以参照官方提供数据流转过程使用SQL处理JSON数据。
- 转发数据 : 选择数据转发一栏的添加操作,出现添加操作页面。选择存储到云数据库(RDS)中。根据提示填写RDS、数据库账户、数据表、每个属性的字段名等信息。官方说明
- 转发错误操作数据 : 顾名思义用来保存数据流转时产生的错误信息,此处省略。
在配置转发数据时,首次从选项列表中选择存储到云数据库(RDS)中会提示需要授权访问云数据库的权限。(授权信息在访问控制RAM->RAM角色管理列表中可见,名称为AliyunIOTAccessingRDSRole)。
错误调试
数据库转存的过程中可能会因为数据流转规则编写的字段名不匹配、数据库字段格式不匹配等等原因导致转存失败,当发现数据表中没有新数据写入时,可在物联网平台的控制台查阅这些错误信息,路径为:监控运维->日志服务->选择日志所属产品->物模型数据分析。