配置云产品流转过程中,您可以在编写解析器脚本时使用数据类型转换函数、时间类型转换函数、基础数据类型函数和流转数据到数据目的函数等方法,实现数据多样化处理。本文介绍相关函数的表达式及其使用说明。
除本文支持的函数表达式外,云产品流转新版的解析器脚本中还支持旧版的函数。详细内容,请参见数据流转支持的函数。
数据类型转换函数
表达式 | 说明 |
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为可选参数,取值如下:
例如:
|