閱讀603 返回首頁    go 阿裏雲


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 flagFROM“/12345/#”WHEREc is not null and b<0

select參數和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

數組的使用說明

  1. 數組表達式需要使用雙引號,比如設備消息為:{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 …ENDCase 表達式 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

  上一篇:go 身份和安全__產品組件_阿裏雲物聯網套件-阿裏雲
  下一篇:go 支持函數列表__規則引擎_產品組件_阿裏雲物聯網套件-阿裏雲