您可以在编写解析器脚本时使用以下函数,实现多样化数据处理。函数列表包括数据类型转换函数、流转数据到数据目的函数和基础数据类型的函数等。本文介绍函数的表达式及其使用说明。
除本文支持的函数表达式外,云产品流转新版的解析器脚本中还支持旧版的函数。详细内容,请参见数据流转支持的函数。
数据类型转换函数
表达式 | 说明 |
---|---|
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个字符,可以输入常量或变量。
| 数据转发到AMQP服务端订阅消费组 |
writeDatahub(destinationId, data) | 流转数据到DataHub。 data:写入DataHub的数据。仅支持Map和Binary类型数据。 | 数据转发到DataHub |
writeFc(destinationId, data) | 流转数据到函数计算(FC)。 data:流转到FC的数据。 | 数据转发到函数计算(FC) |
writeKafka(destinationId, payload, key) | 流转数据到消息对列Kafka。 key:可选参数,流转到Kafka Topic消息中携带的key。 您可以在Kafka消息消费端,通过标签进行消息路由。 | 数据转发到消息队列Kafka |
writeMns(destinationId, payload) | 流转数据到消息服务(MNS)。 | 数据转发到消息服务(MNS) |
writeMq(destinationId, payload, tag) | 流转数据到消息队列(RocketMQ)。 tag:可选参数。设置标签后,所有通过该操作流转到RocketMQ对应Topic里的消息都会携带该标签。您可以在RocketMQ消息消费端,通过标签进行消息过滤。 tag长度不超过128个字符,可以输入常量或变量。
| 数据转发到消息队列RocketMQ |
writeTableStore(destinationId, data,flowType) | 流转数据到表格存储(Tablestore)宽表模型。
| 数据转发到表格存储(Tablestore)宽表模型 |
writeTableStoreTs(destinationId, timeInUs, metricName, tags, fields, dataSource) | 流转数据到表格存储(Tablestore)时序模型。
该函数表达式是单行写入数据至Tablestore,您可使用下面表达式,写入多行数据:
参数的更多说明,请参见时序模型概述。 | 数据转发到表格存储(Tablestore)时序模型 |
writeRds(destinationId, data) | 流转数据到云数据库RDS。 data:写入云数据库表的数据。仅支持Map类型数据,其中键(Key)值对应数据库表列名,值(Value)对应列值。 | 数据转发到云数据库RDS |
writeTsdb(destinationId, timestamp, metricName, value, tag) | 流转数据到时序数据库(TSDB)或实例内的时序数据库中。
| 数据转发到实例内的时序数据存储、数据转发到时序数据库(TSDB) |
writeIotTopic(destinationId, topic, payload, deviceName) | 流转数据到另一个Topic。
重要 MQTT云网关产品和设备下,流转的数据目的Topic仅支持自定义Topic,且不支持跨产品流转,即仅支持流转到当前产品下的自定义Topic。 开源MQTT托管形态的基础型实例下,仅支持创建一个产品,默认不支持跨产品流转。 | 数据转发到另一Topic |
writeLindorm(destinationId, timestamp, tags, fields) | 流转数据到时序数据库(Lindorm)。
| 数据转发到时序数据库(Lindorm) |
基本数据类型支持的函数
- Map类型。
表达式 说明 [Object] 获取指定键( Key
)对应的Value
。size() 获取Map数据中键值对数量。 containKey(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结尾。 返回结果类型为布尔型。 |
getDeviceTag(key) | 返回key 所对应的设备标签。如果设备没有该key 对应的标签,则返回值为空。 |
getOrNull(data, "items", ......) | 返回JSON格式数据data中指定字段的值。 该函数中传入的字段个数没有限制,但必须逐级传入。函数返回最后一个字段的值,若最后一个字段不存在或值为空,则函数返回值为null。 例如data中数据:
函数示例如下:
|
payload(textEncoding) | 返回设备发布消息payload的转义数据。textEncoding表示payload的转义字符编码,取值如下:
|
parseNumber(numberString, radix) | 将字符串numberString按指定的进制radix转换为数字。 radix为可选参数,取值如下:
例如:
|
相关文档
您可结合支持的脚本语法,调用函数将数据流转到数据目的地。脚本的使用说明,请参见脚本语法。