日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

函數列表

規則引擎提供多種函數,您可以在編寫SQL時使用這些函數,實現多樣化數據處理。

數據流轉支持的函數

函數名

函數說明

abs(number)

返回絕對值。

asin(number)

返回number值的反正弦。

attribute(key)

返回key所對應的設備標簽。如果設備沒有該key對應的標簽,則返回值為空。使用SQL調試時,因為沒有真實設備及對應的標簽,返回值為空。

concat(string1, string2)

用于連接字符串。返回連接后的字符串。

示例:concat(field,'a')

cos(number)

返回number值的余弦。

cosh(number)

返回number值的雙曲余弦(hyperbolic cosine)。

crypto(field,String)

對field的值進行加密。

第二個參數String為算法字符串。可選:MD2、MD5、SHA1、SHA-256、SHA-384、SHA-512。

deviceName()

返回當前設備名稱。使用SQL調試時,因為沒有真實設備,返回值為空。

endswith(input, suffix)

判斷input的值是否以suffix結尾。

exp(number)

返回以自然常數e為底的指定次冪。

floor(number)

返回一個最接近它的整數,它的值小于或等于這個浮點數。

log(n, m)

返回自然對數。

如果不傳m值,則返回log(n)

lower(string)

返回小寫字符串。

mod(n, m)

n%m余數。

nanvl(value, default)

返回屬性值。

若屬性值為null,則返回default。

newuuid()

返回一個隨機UUID字符串。

payload(textEncoding)

返回設備發布消息的payload轉義字符串。

字符編碼默認UTF-8,即payload()默認等價于payload(‘utf-8’)

power(n,m)

返回n的m次冪。

rand()

返回[0~1)之間的一個隨機數。

replace(source, substring, replacement)

對某個目標列值進行替換,即用replacement替換source中的substring。

示例:replace(field,’a’,’1’)

sin(n)

返回n值的正弦。

sinh(n)

返回n值的雙曲正弦(hyperbolic sine)。

tan(n)

返回n值的正切。

tanh(n)

返回n值的雙曲正切(hyperbolic tangent)。

thingPropertyFlatMap(property)

獲取物模型屬性對應數值,并去掉item層級,value有多個時,使用“_”拼接。當物模型屬性多于50個時,云產品流轉無法流轉全量物模型屬性,使用該函數可以拉平物模型屬性結構,實現全量物模型屬性流轉。

property為需要獲取的屬性,可以傳入多個property,為空則表示提取所有屬性。

示例:使用thingPropertyFlatMap('Power', 'Position'),將在消息體中添加"Power": "On", "Position_latitude": 39.9, "Position_longitude": 116.38

timestamp(format)

返回當前系統時間,格式化后返回北京時間(GMT+8)。

format為可選。如果為空,則返回當前系統時間戳毫秒值,例如,使用timestamp(),返回的時間戳為1543373798943;如果指定format,則根據指定格式,返回當前系統時間,如timestamp('yyyy-MM-dd\'T\'HH:mm:ss\'Z\''),返回的時間戳為2018-11-28T10:56:38Z

timestamp_utc(format)

返回當前系統時間,格式化后返回UTC時間。

format為可選。如果format為空,則返回當前系統時間戳毫秒值,例如,使用timestamp_utc(),返回的時間戳為1543373798943;使用timestamp_utc('yyyy-MM-dd\'T\'HH:mm:ss\'Z\''),返回的時間戳為2018-11-28T02:56:38Z

topic(number)

返回Topic分段信息。

如,有一個Topic:/alDbcLe****/TestDevice/user/set。使用函數topic(),則返回整個Topic;使用topic(1),則返回Topic的第一級類目alDbcLe****;使用topic(2),則返回第二級類目TestDevice,以此類推。

upper(string)

將字符串中的小寫字母轉為大寫字母。

示例:函數upper(alibaba)的返回結果是ALIBABA

to_base64(*)

當原始Payload數據為二進制數據時,可使用該函數,將所有二進制數據轉換成base64String。

messageId()

返回物聯網平臺生成的消息ID。

substring(target, start, end)

返回從start(包括)到end(不包括)的字符串。

參數說明:

  • target:要操作的字符串。必填。

  • start:起始下標。必填。

  • end:結束下標。非必填。

說明
  • 目前,僅支持String和Int類型數據。Int類型數據會被轉換成String類型后再處理。

  • 常量字符串,請使用單引號。雙引號中的數據,將視為Int類型數據進行解析。

  • 如果傳入的參數錯誤,例如參數類型不支持,會導致SQL解析失敗,而放棄執行規則。

字符串截取示例:

  • substring('012345', 0) = "012345"

  • substring('012345', 2) = "2345"

  • substring('012345', 2.745) = "2345"

  • substring(123, 2) = "3"

  • substring('012345', -1) = "012345"

  • substring(true, 1.2) error

  • substring('012345', 1, 3) = "12"

  • substring('012345', -50, 50) = "012345"

  • substring('012345', 3, 1) = ""

to_hex(*)

當原始Payload數據為二進制數據時,可使用該函數,將二進制數據轉換成十六進制字符串。

user_property()

設備使用MQTT 5.0協議通信時,獲取UserProperty列表中的屬性數據。

  • user_property()獲取所有屬性數據。

  • user_property('${Key}')獲取指定Key的數據。

例如設備上報的UserProperty{"a": "1", "b": "2"}

  • user_property()返回"{\"a\": \"1\", \"b\": \"2\"}"

  • user_property('a')返回"{\"a\": \"1\"}"

things_function_type()

獲取上報的物模型功能類型。僅對物模型事件和服務的消息生效。各功能返回值如下:

  • 事件:返回事件的標識符。

  • 服務:返回服務的標識符。

例如Topic:/SdfgeW***/device1/thing/event/BrokenInfo/post,流轉事件BrokenInfo的數據,things_function_type()返回上報事件標識符BrokenInfo

things_property('${參數名稱}')

獲取物模型屬性、服務、事件中參數對應的值。僅對物模型消息生效。

例如Topic:/${productKey}/${deviceName}/thing/event/property/post,流轉上報屬性中CurrentTemperature(當前溫度)數據,things_property('CurrentTemperature')返回CurrentTemperature上報的值。

使用示例

您可以在數據流轉SQL語句的SELECT字段和WHERE條件字段中,使用函數獲取數據或者對數據做處理。

例如,某溫度傳感器產品功能定義的默認模塊有一個溫度屬性(Temperature),設備上報的溫度屬性數據經物模型轉化后的數據格式如下:

{
    "deviceType": "Custom",
    "iotId": "H5KURkKdibnZvSls****000100",
    "productKey": "a1HHrkm****",
    "gmtCreate": 1564569974224,
    "deviceName": "TestDevice1",
    "items": {
        "Temperature": {
            "value": 23.5,
            "time": 1564569974229
        }
    }
}

該溫度傳感器產品下有多個設備,但只有當設備TestDevice1、TestDevice2或TestDevice3上報的溫度大于38時,需將溫度屬性數據流轉到函數計算中進行計算處理。設置篩選設備上報數據的規則SQL如下圖。

編寫SQL

SQL語句:

SELECT deviceName() as deviceName,things_property('Temperature') as Temperature 
FROM "/g5or0***/+thing/event/property/post" 
WHERE things_property('Temperature')>38 and deviceName() in ('TestDevice1', 'TestDevice2', 'TestDevice3')

以上示例中,使用了函數deviceName()things_property('Temperature')

  • 在SELECT字段使用以上函數,表示從數據中篩選出設備名稱,和屬性Temperature的值。

  • 在條件字段使用以上函數,并指定為>38in ('TestDevice1', 'TestDevice2', 'TestDevice3'),表示僅當Temperature值大于38,且設備名稱的值為TestDevice1、TestDevice2或TestDevice3中的其中一個時,才會進行數據流轉。

規則SQL中,SELECT字段和WHERE條件字段的具體編寫方法,和規則引擎支持的條件表達式列表,請參見SQL表達式