sql表达式__规则引擎_产品组件_阿里云物联网套件-阿里云
本文档主要描述处理数据中SQL表达式。
为了容易理解,我们把一条规则抽象为一条sql表达(类试mysql语法):
例子:SELECT crypto(userId,’SHA1’) md2, (a+1) al, color c, config.flag flag, deviceId(),CASE col.a WHEN 1 THEN ‘Y’ ELSE ‘N’ END flag
FROM
“/12345/#”WHERE
c is not null and b<0select参数和where条件可以使用消息的payload属性作为列,不支持子查询。
1,FROM “topic”当有符合topic规则的消息到达时,消息的payload数据以json形式被上下文环境使用(如果消息格式不合法,将忽略此消息),您可以使用topic()函数引用具体的topic值。
注意,如果您选的topic来自别人共享的,则配置的topic需要与提供的topic模式匹配,比如 共享的topic:/123/+/abc,输入 /123/dfdf(不合法),/123/+/abc(合法),/123/567/abc(合法),详情请查看控制台配置
2,SELECT
select的属性来源于消息的payload,可以使用json表达式形式引用,也可以来源于函数比如deviceId()。
比如假定 设备发送的消息payload={a:123,b:45,c:’ccc’,d:{a:55,b:’222’,c:{a:88}},e:[{e1:1},{e1:2}]} , 对于(select d.c.a a1,a a2,deviceId() as d1),则a1=88,a2=123 ,d1=asdfdsf23434 。 建议参数使用别名,比如d.c.a a1。
3,WHERE
规则触发条件,条件表达式。当符合topic的消息到达时,这条消息触发规则的条件,条件表达式列表见下方表格描述。
4,json表达式 select和where可以直接使用json表达式。 json表达式支持属性,也支持数组。如果payload数据解析出错将会导致规则运行失败。 转发数据action中的表达式需要使用 ${表达式}
来使用。
例子,假定payload={“tem”:50,”colors”:[{“c”:”red”},{“c”:”blue”}],”config”:{“isonline”:0}}, 则 tem=50,colors[0].c=red,config.isonline=0 。当消息规则匹配时,select属性列表可用于 转发动作参数引用。比如规则:select deviceId() as device,temperature t1 from xxxx,对于ots存储的action,配置中可以
${device}、${t1}
分别引用到select中属性device t1
。
数组的使用说明
数组表达式需要使用双引号,比如设备消息为:{a:[{v:1},{v:2}]},那么select中引用a[0]的写法为:select ".a[0]" data1,".a[1].v" data2,则data1=[{v:1}],data2=2
条件表达式支持列表
操作符 | 描述 | 举例 |
= | 相等 | color = ‘red’ |
<> | 不等于 | color <> ‘red’ |
AND | 逻辑与 | color = ‘red’ AND siren = ‘on’ |
OR | 逻辑或 | color = ‘red’ OR siren = ‘on’ |
( ) | 括号代表一个整体 | color = ‘red’ AND (siren = ‘on’ OR isTest) |
+ | 算术加法 | 4 + 5 |
- | 算术减 | 5 - 4 |
/ | 除 | 20 / 4 |
* | 乘 | 5 * 4 |
% | 取余数 | 20 % 6 |
< | 小于 | 5 < 6 |
<= | 小于或等于 | 5 <= 6 |
> | 大于 | 6 > 5 |
>= | 大于或等于 | 6 >= 5 |
函数调用 | 支持函数,详细列表请参考 函数章节。 | deviceId() |
JSON属性表达式 | 可以从消息payload以json表达式提取属性. | state.desired.color,a.b.c[0].d |
CASE … WHEN … THEN … ELSE …END | Case 表达式 | CASE col WHEN 1 THEN ‘Y’ WHEN 0 THEN ‘N’ ELSE ‘’ END as flag |
IN | 仅支持枚举,不支持子查询 | 比如 where a in(1,2,3); 不支持以下形式: where a in(select xxx) |
like | 匹配某个字符, 仅支持%号通配符, 代表匹配任意字符串 | 比如where c1 like ‘%abc’, where c1 not like ‘%def%’ |
最后更新:2016-09-28 16:26:56
上一篇:
身份和安全__产品组件_阿里云物联网套件-阿里云
下一篇:
支持函数列表__规则引擎_产品组件_阿里云物联网套件-阿里云
BandwidthPackagePublicIpMonitorDataSetType__数据类型_API参考_专有网络 VPC-阿里云
服务可用性__服务协议_产品简介_开放搜索-阿里云
获取文件访问地址__管理文件_控制台用户指南_对象存储 OSS-阿里云
停止执行计划周期调度__执行计划_API参考_E-MapReduce-阿里云
开发准备___开发人员指南_E-MapReduce-阿里云
查询媒体工作流执行实例__媒体工作流执行实例接口_API使用手册_视频点播-阿里云
创建函数__数据库开发_用户指南(RDBMS)_数据管理-阿里云
Role__数据类型_RAM API文档_访问控制-阿里云
CDN API鉴权规则__RAM资源授权-CDN_API 手册_CDN-阿里云
3.2 创建和修改表组__第三章 DDL_使用手册_分析型数据库-阿里云
相关内容
常见错误说明__附录_大数据计算服务-阿里云
发送短信接口__API使用手册_短信服务-阿里云
接口文档__Android_安全组件教程_移动安全-阿里云
运营商错误码(联通)__常见问题_短信服务-阿里云
设置短信模板__使用手册_短信服务-阿里云
OSS 权限问题及排查__常见错误及排除_最佳实践_对象存储 OSS-阿里云
消息通知__操作指南_批量计算-阿里云
设备端快速接入(MQTT)__快速开始_阿里云物联网套件-阿里云
查询API调用流量数据__API管理相关接口_API_API 网关-阿里云
使用STS访问__JavaScript-SDK_SDK 参考_对象存储 OSS-阿里云