[NB-IoT物聯網套件] 產品介紹 快速入門 用戶指南 設備開發指南 應用開發指南 最佳實踐 常見問題 服務協議 變更日誌

SQL語句

本頁目錄

示例

SQL SELECT語句

SQL WHERE語句

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
*算術乘法2*5
%取餘20%7
<小於5<6
<=小於等於5<=6
>大於5>4
>=大於等於5>=4

个搜索结果,搜索内容 “

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