多協議接入 產品介紹 快速入門 用戶指南 開發指南
EDP TCP透傳 MQTT Modbus HTTP
常見問題

SQL語句

OneNET將系統的基礎消息格式設計為json格式,其數據可以映射為虛擬的表,數據中的Key對應表的列,Value對應列值,規則引擎支援SQL語句對該數據進行處理,如下圖所示:

示例

消息源選擇為設備數據點消息,基礎消息格式示例如下:

{
    "sysProperty": {
        "messageType": "deviceDatapoint",
        "productId": "90273",
    },
    "appProperty":{
        "deviceId": "102839",
        "dataTimestamp": 15980987429000,
        "datastream":"weather"
    },
    "body":{
        "temperature": 30,
        "humidity": "47%"
    }
}

SQL示例:

SELECT appProperty.deviceId as did, body as weather FROM /deviceDatapoint/ds WHERE body.temperature > 10

該SQL語句表示:

篩選設備上載數據點的消息,當body的value大於10的時候,提取appProperty.deviceId屬性,並重命名為did;提取body屬性,重命名為temperature,消息重組後進行轉發

經過該SQL處理的消息輸出如下消息

{
    "did": "90273",
    "weather": {
        "temperature": 30,
        "humidity": "47%"
    }
}

SELECT

  • 默認為*,即不做任何提取與重組操作
  • 支援as,可對提取出的屬性進行重命名,示例如下:
    SELECT body as temperature
    
  • 支援使用json path 獲取嵌套json 中的屬性值,示例如下:
    SELECT appProperty.deviceId as did
    
  • 支援通過逗號(,)進行多個屬性的提取與重命名,示例如下:
    SELECT appProperty.deviceId as did, appProperty.dataTimestamp as t
    
  • 不支援子SQL查詢
  • SELECT語句中的最多支援10個查詢欄位

WHERE

WHERE語句用於定義規則觸發條件

  • 支援使用json path獲取嵌套json中的屬性值,同SELECT,示例如下:
    SELECT * WHERE body.temperature > 10
    
  • 支援對數值類型進行大於、小於、等於判斷,示例如下:
    SELECT * WHERE body.temperature = 10
    
  • 支援對字元類型進行匹配判斷,示例如下:
    SELECT * WHERE body.humidity = '47%'
    
  • 支援多個運算式的“與”“或”條件運算,示例如下:
    SELECT * WHERE body.temperature > 10 AND body.temperature < 30
    
    運算式支援詳情見下表

條件表達式支援列表

操作符 說明 舉例
相等 temperature=20
!= 不等於 temperature!=20
AND 邏輯與 temperature=20 AND country='CN'
OR 邏輯或 temperature=20 OR country='CN'
( ) 括弧中運算式優先計算 temperature=20 AND (country='CN' OR online = true)
+ 算術加法 4+5
- 算術減法 5-4
/ 算術除法 10/5
* 算術乘法 25
取餘 20%7
\< 小於 56
\<= 小於等於 5\<=6
> 大於 54
>= 大於等於 5>=4

个搜索结果,搜索内容 “

    0 个搜索结果,搜索内容 “