配置云產品流轉過程中,您可以在編寫解析器腳本時使用數據類型轉換函數、時間類型轉換函數、基礎數據類型函數和流轉數據到數據目的函數等方法,實現數據多樣化處理。本文介紹相關函數的表達式及其使用說明。
除本文支持的函數表達式外,云產品流轉新版的解析器腳本中還支持舊版的函數。詳細內容,請參見數據流轉支持的函數。
數據類型轉換函數
表達式 | 說明 |
toBoolean(Object) | Object值轉換為Boolean值。參數支持以下類型的取值:
|
toNumber(Object) | Object值轉換為Number值。參數支持以下類型的取值:
|
toString(Object) | Object值轉換為String值。 參數值類型不限,返回對應String類型值。參數值為null,返回空字符。 當參數為二進制類型時,按照UTF-8編碼返回對應值。 |
toMap(Object) | Object值轉換為Map值。參數支持以下類型的取值:
|
toArray(Object) | Object值轉換為Array值。參數支持以下類型的取值:
|
toBinary(Object) | Object值轉換為二進制值。參數支持以下類型的取值:
|
時間類型轉換函數
函數表達式 | 說明 |
format_date(timestamp, patten, timeZone) | 將時間戳毫秒值轉換為指定格式的時間。返回String類型的時間。
|
to_timestamp(dateString, patten, timeZone) | 將指定格式的時間轉換為時間戳毫秒值。返回數值類型的時間戳。
|
流轉數據到數據目的函數
以下函數表達式中的入參destinationId是數據目的ID,payload是消息內容。
函數表達式 | 說明 | 示例 |
writeAmqp(destinationId, payload, tag) | 流轉數據到AMQP消費組。 tag:可選參數。設置 tag長度不超過128個字符,可以輸入常量或變量。
| |
writeDatahub(destinationId, data) | 流轉數據到DataHub。 data:寫入DataHub的數據。僅支持Map和Binary類型數據。 | |
writeFc(destinationId, data) | 流轉數據到函數計算(FC)。 data:流轉到FC的數據。 | |
writeKafka(destinationId, payload, key) | 流轉數據到消息對列Kafka。 key:可選參數,流轉到Kafka Topic消息中攜帶的key。 您可以在Kafka消息消費端,通過標簽進行消息路由。 | |
writeMns(destinationId, payload) | 流轉數據到輕量消息隊列(原 MNS) SMQ(Simple Message Queue (formerly MNS))。 | |
writeMq(destinationId, payload, tag) | 流轉數據到消息隊列(RocketMQ)。 tag:可選參數。設置標簽后,所有通過該操作流轉到RocketMQ對應Topic里的消息都會攜帶該標簽。您可以在RocketMQ消息消費端,通過標簽進行消息過濾。 tag長度不超過128個字符,可以輸入常量或變量。
| |
writeTableStore(destinationId, data,flowType) | 流轉數據到表格存儲(Tablestore)寬表模型。
| |
writeTableStoreTs(destinationId, timeInUs, metricName, tags, fields, dataSource) | 流轉數據到表格存儲(Tablestore)時序模型。
該函數表達式是單行寫入數據至Tablestore,您可使用下面表達式,寫入多行數據:
參數的更多說明,請參見時序模型介紹。 | |
writeRds(destinationId, data) | 流轉數據到云數據庫RDS,新增數據到云數據庫表。 data:寫入云數據庫表的數據。僅支持Map類型數據,其中鍵(Key)值對應數據庫表列名,值(Value)對應列值。 | |
updateRds(destinationId, data, condition, limit) | 流轉數據到云數據庫RDS,更新已寫入云數據庫表中的數據。
例如:
| |
writeTsdb(destinationId, timestamp, metricName, value, tag) | 流轉數據到時序數據庫(TSDB)中。
| |
writeIotTopic(destinationId, topic, payload, deviceName) | 流轉數據到另一個Topic。
重要 MQTT云網關產品和設備下,流轉的數據目的Topic僅支持自定義Topic,且不支持跨產品流轉,即僅支持流轉到當前產品下的自定義Topic。 MQTT型實例下,僅支持創建一個產品,默認不支持跨產品流轉。 | |
writeLindorm(destinationId, timestamp, tags, fields) | 流轉數據到時序數據庫(Lindorm)。
| |
writePolarDB(destinationId, data) | 流轉數據到云原生數據庫PolarDB MySQL版。 data:寫入云數據庫表的數據。僅支持Map類型數據,其中鍵(Key)值對應數據庫表列名,值(Value)對應列值。 |
基本數據類型支持的函數
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) | 返回 |
getOrNull(data, "items", ......) | 返回JSON格式數據data中指定字段的值。 該函數中傳入的字段個數沒有限制,但必須逐級傳入。函數返回最后一個字段的值,若最后一個字段不存在或值為空,則函數返回值為null。 例如data中數據:
函數示例如下:
|
payload(textEncoding) | 返回設備發布消息payload的轉義數據。textEncoding表示payload的轉義字符編碼,取值如下:
|
parseNumber(numberString, radix) | 將字符串numberString按指定的進制radix轉換為數字。 radix為可選參數,取值如下:
例如:
|