全部產品
Search
文件中心

IoT Platform:函數列表

更新時間:Jun 30, 2024

您可以在編寫時序資料存放區規則指令碼時使用以下函數,實現多樣化資料處理。函數列表包括資料類型轉換函式、時間類型轉換函式和基礎資料類型的函數等。本文介紹函數的運算式及其使用說明。

背景資訊

您可結合支援的指令碼文法,調用函數將裝置自訂Topic資料存放區到物聯網平台的時序資料存放區空間。指令碼的使用說明,請參見指令碼文法

時序資料存放區相關函數

運算式

說明

convert2HotStorageData(fields, time)

fields資料進行標準格式轉換。

  • fields:要儲存的資料記錄,為Map或JSON類型資料。格式如下:

    {
        "key1": value1,
        "key2": value2
    }
    • key1key2為待儲存的欄位標識符,作為儲存資料的名稱。

    • value1value2為賦值給欄位的裝置資料,作為儲存資料的具體值。

    重要

    fields中最多包含500個key

  • time:儲存資料對應的時間戳記,單位為毫秒,為數值型資料。

    您可使用函數timestamp()擷取系統目前時間戳,也可自訂時間。

    該時間戳記會賦值給fields中所有欄位資料的time

轉換後的標準格式為:

{
    "key1": {
        "value": value1,
        "time": timestamp()
    },
    "key2": {
        "value": value2,
        "time": timestamp()
    }
}

writeHotStorage(params)

將標準格式資料params儲存到物聯網平台的時序資料存放區空間。

params為儲存資料的標準格式資料,必須包含keyvaluetime。例如:

{
    "key1": {
        "value": value1,
        "time": 1626948134319
    },
    "key2": {
        "value": value2,
        "time": 1626948134000
    }
}
重要

params中最多包含500個key

資料類型轉換函式

運算式

說明

toBoolean(Object)

Object值轉換為Boolean值。參數支援以下類型的取值:

  • Boolean:返回對應的布爾值。

  • Number:參數為0,返回false。否則,返回true。

  • String:參數為"true",返回true。否則,返回false。

  • 參數值為null:返回false。

toNumber(Object)

Object值轉換為Number值。參數支援以下類型的取值:

  • Boolean:參數為true,返回1,參數為false,返回0。

  • Number:返回對應的數值。

  • String:按照數實值型別解析。

  • 參數值為null:返回0。

toString(Object)

Object值轉換為String值。

參數實值型別不限,返回對應String類型值。參數值為null,返回Null 字元。

當參數為二進位類型時,按照UTF-8編碼返回對應值。

toMap(Object)

Object值轉換為Map值。參數支援以下類型的取值:

  • Map:返回對應的值。

  • String:按照JSON格式解析為Map。

  • 參數值為null:返回空Map。

toArray(Object)

Object值轉換為Array值。參數支援以下類型的取值:

  • Array:返回對應的值。

  • String:按照JSON格式解析為Array。

  • 參數值為null:返回空Array。

toBinary(Object)

Object值轉換為二進位值。參數支援以下類型的取值:

  • Binary:返回對應的值。

  • String:按照UTF-8編碼傳回值。

  • 參數值為null:返回空Binary。

時間類型轉換函式

函數運算式

說明

format_date(timestamp, patten, timeZone)

將時間戳記毫秒值轉換為指定格式的時間。返回String類型的時間。

  • timestamp:時間戳記毫秒值。

  • patten:待轉換的時間格式。例如yyyy-MM-dd HH:mm:ss

  • timeZone:時區。例如GMT、UTC、CST等。建議主動設定時區,若未設定,預設為北京時間(GMT+8)。

to_timestamp(dateString, patten, timeZone)

將指定格式的時間轉換為時間戳記毫秒值。返回數實值型別的時間戳記。

  • dateString:時間字串。

  • patten:指定的時間格式。例如yyyy-MM-dd HH:mm:ss

  • timeZone:時區。例如GMT、UTC、CST等。建議主動設定時區,若未設定,預設為北京時間(GMT+8)。

基礎資料型別 (Elementary Data Type)支援的函數

  • Map類型。

    運算式

    說明

    [Object]

    擷取指定鍵(Key)對應的Value

    size()

    擷取Map資料中索引值對的數量。

    containsKey(String)

    判斷Map資料中是否包含指定的鍵。

    keySet()

    擷取Map資料中鍵的集合,傳回型別為Array。

    remove(Object)

    移除Map資料中指定鍵對應的索引值對。

    put(Object, Object)

    在Map資料中添加索引值對。

    putAll(map)

    在Map資料中大量新增一組Map資料。

  • Array類型。

    函數

    說明

    [int]

    擷取指定索引位置的值。數組首位的索引值為0。

    contains(Object)

    判斷數組中是否包含指定元素。

    remove(Object)

    移除數組中指定的元素。

    removeAt(int)

    移除數組中指定索引位置的元素。

    add(Object)

    在數組末尾中添加元素。

    add(index, Object)

    在對應index索引位置添加元素。

    addAll(array)

    在數組中添加另一個數組。

    size()

    擷取數組中元素個數。

  • String類型。

    函數

    說明

    substring(start, end)

    截取從start位置到end-1位置的字串。end不傳時,截取到字串末尾。

    length()

    擷取字串長度。

    split(String)

    按照分割字元,分割字串。

    startsWith(String)

    查看字串是否以指定的字串開頭。

    endsWith(String)

    查看字串是否以指定的子字串結尾。

    indexOf(String, index)

    從指定index索引位置開始,指定字串在字串中首次出現的位置。

    index不傳入,預設為0。

其他函數

運算式

說明

endWith(input, suffix)

判斷字串input中是否以字串suffix結尾。

返回結果類型為布爾型。

productKey()

返回當前產品的ProductKey值。

getDeviceTag(key)

返回key所對應的裝置標籤。如果裝置沒有該key對應的標籤,則傳回值為空白。

getOrNull(data, "items", ......)

返回JSON格式資料data中指定欄位的值。

該函數中傳入的欄位個數沒有限制,但必須逐級傳入。函數返回最後一個欄位的值,若最後一個欄位不存在或值為空白,則函數傳回值為null。

例如data中資料:

"items": {
    "Humidity": {
        "value": 25,
        "time": 1626948134319
    }
}

函數樣本如下:

  • getOrNull(data, "items")返回欄位items"Humidity": {"value": 25,"time": 1626948134319}

  • getOrNull(data, "items", "Humidity", "value")返回欄位value25

  • getOrNull(data, "items", "Temperature"),欄位Temperature不存在,傳回值null。

payload(textEncoding)

返回裝置發布訊息payload的轉義資料。textEncoding表示payload的逸出字元編碼,取值如下:

  • 不傳入參數:預設按照UTF-8編碼轉換為字串,即payload()等價於payload('utf-8')

  • 'json':將payload資料轉換成Map格式變數。如果payload不是JSON格式,則返回異常。

  • 'binary':將payload資料轉換成二進位變數進行透傳。

parseNumber(numberString, radix)

將字串numberString按指定的進位radix轉換為數字。

radix為選擇性參數,取值如下:

  • 10(預設):將字串轉換為十進位數字。

  • 2:將字串轉換為位元字。

  • 16:將字串轉換為十六進位數字。

例如:

// 裝置上報資料。
var content = '0xFF';
// 擷取待轉換字串FF.
var x = content.substring(2);
// 將FF轉換為16進位數字。
var value = parseNumber(x, 16);