603
阿裏雲
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-阿裏雲