配置雲產品流轉過程中,您可以在編寫解析器指令碼時使用資料類型轉換函式、時間類型轉換函式、基礎資料類型函數和流轉資料到資料目的函數等方法,實現資料多樣化處理。本文介紹相關函數的運算式及其使用說明。
除本文支援的函數運算式外,雲產品流轉新版的解析器指令碼中還支援舊版的函數。詳細內容,請參見資料流轉支援的函數。
資料類型轉換函式
運算式 | 說明 |
toBoolean(Object) | Object值轉換為Boolean值。參數支援以下類型的取值:
|
toNumber(Object) | Object值轉換為Number值。參數支援以下類型的取值:
|
toString(Object) | Object值轉換為String值。 參數實值型別不限,返回對應String類型值。參數值為null,返回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) | 流轉資料到Function Compute(FC)。 data:流轉到FC的資料。 | |
writeKafka(destinationId, payload, key) | 流轉資料到訊息對列Kafka。 key:選擇性參數,流轉到Kafka Topic訊息中攜帶的key。 您可以在Kafka訊息消費端,通過標籤進行訊息路由。 | |
writeMns(destinationId, payload) | 流轉資料到Simple Message Queue (formerly MNS) (SMQ)。 | |
writeMq(destinationId, payload, tag) | 流轉資料到訊息佇列(RocketMQ)。 tag:選擇性參數。設定標籤後,所有通過該操作流轉到RocketMQ對應Topic裡的訊息都會攜帶該標籤。您可以在RocketMQ訊息消費端,通過標籤進行訊息過濾。 tag長度不超過128個字元,可以輸入常量或變數。
| |
writeTableStore(destinationId, data,flowType) | 流轉資料到Table Store(Tablestore)寬表模型。
| |
writeTableStoreTs(destinationId, timeInUs, metricName, tags, fields, dataSource) | 流轉資料到Table Store(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) | 流轉資料到另一個Topic。 Topic:資料轉寄目的地Topic,支援以下Topic。
Topic中 更多資訊,請參見步驟一:建立資料目的。 重要 目的地Topic所屬裝置若未訂閱該Topic,則收不到轉寄的訊息。 例如使用MQTT.fx工具接入物聯網平台的裝置A,不會自動訂閱裝置Topic,若裝置B向裝置A的Topic: 裝置Topic自動訂閱的詳細說明,請參見自動訂閱Topic說明。 | |
writeLindorm(destinationId, timestamp, tags, fields) | 流轉資料到時序資料庫(Lindorm)。
|
基礎資料型別 (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) | 返回 |
getOrNull(data, "items", ......) | 返回JSON格式資料data中指定欄位的值。 該函數中傳入的欄位個數沒有限制,但必須逐級傳入。函數返回最後一個欄位的值,若最後一個欄位不存在或值為空白,則函數傳回值為null。 例如data中資料:
函數樣本如下:
|
payload(textEncoding) | 返回裝置發布訊息payload的轉義資料。textEncoding表示payload的逸出字元編碼,取值如下:
|
parseNumber(numberString, radix) | 將字串numberString按指定的進位radix轉換為數字。 radix為選擇性參數,取值如下:
例如:
|