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