规则引擎Rule Engine

    操作步骤

    约束条件

    约束条件用类似SQL的WHER语法,对输入消息进行过滤。只有符合约束条件的消息才会转发到目的地中去。例如,如果希望仅处理device01并且温度超过30的消息,约束条件的SQL可写成:

    deviceid = 'device01' AND temperature > 30

    约束条件可以为空,表示不对消息过滤,即处理所有的输入消息。

    查询字段

    查询字段的SQL子句可以对输入消息进行各种变换。可以SELECT感兴趣的字段,可以插入新的字段,可以对输入字段重命名,可以对数据进行简单的运算,可以对JSON嵌套字段展平,可以生成嵌套的JSON结构,等等。如果对输入消息不做任何变换,则使用*。

    如果需要SELECT嵌套的JSON字段,可以通过点(.)来连接JSON路径上的每一个key。

    举例

    对于如下的输入消息:

    {
    	"ts": 1535276695,
    	"topic": "$baidu/iot/shadow/mydevice01/update",
    	"metrics": {
    		"pressure": 1.5,
    		"temperatureInF": 95
    	}
    }

    通过如下的SQL查询语句进行变换:

    ts, 'DeviceShadow' AS name, SUBSTRING(topic, 19, position('/update' in topic) - 19) AS deviceName, metrics.pressure AS reported.pressure, (metrics.temperatureInF - 32)/1.8 AS reported.temperatureInC

    可以得到如下的结果消息:

    {
    	"ts": 1535276695,
    	"name": "DeviceShadow",
    	"deviceName": "mydevice01",
    	"reported": {
    		"pressure": 1.5,
    		"temperatureInC": 35
    	}
    }

    更多的SQL语法,请参考SQL手册

    SQL模板

    在查询字段文本输入框的右侧,有一个名为SQL模板的链接,点击后,在右侧显示常用的SQL语句,方便您参考。点击模板右侧的载入SQL链接,会将该模板的SQL语句复制到查询字段的输入框。再次点击SQL模板链接,可以关闭模板显示栏。

    测试

    为了验证填写的SQL能够产生预期的结果,您在创建规则的页面,可以粘贴、或者实时自动探测测试样例消息,然后点击测试按钮,系统会即刻在结果预览文本区域显示结果消息,并且提示结果消息是否符合时序数据库的写入要求。

    点击自动探测系统会订阅您输入的主题,当收到一条消息后,立即返回,并且将订阅到的消息显示在测试输入文本区域;反之,如果订阅一段时间,没有收到任何消息,则停止订阅。该按钮可以重复点击,以便多次探测。

    如果您输入主题中没有消息,您可以手动粘贴一条样例消息到测试输入文本区域,以便完成测试。

    实例和主题

    实例和主题指定规则处理消息的来源。主题可以含通配符: +#,以便一个规则处理多个主题的消息。

    如主题:

    $baidu/iot/shadow/+/update

    表示所有物影子的update消息。而主题:

    /devices/#

    表示处理所有主题以"/devices/"开头的消息,例如/devices, /devices/01, /devices/02,/devices/warn/01等。

    上一篇
    概述
    下一篇
    数据目的地