IoT Platform provides various functions that can be used in a parser script to process data. You can use the functions to convert data types, forward data to destinations, and process payloads of specific data types. This topic describes the functions provided by IoT Platform.
You can use the functions supported by Data Forwarding v1.0 in parser scripts of Data Forwarding v2.0. For more information, see Functions.
Convert data types
Function | Description |
toBoolean(Object) | Converts the Object parameter into a Boolean value. The parameter supports the following data types:
|
toNumber(Object) | Converts the value of the Object parameter into a number. The parameter supports the following data types:
|
toString(Object) | Converts the value of the Object parameter into a string. If the parameter is set to a value other than NULL, the function returns the value as a string. If the parameter is set to NULL, the function returns an empty string. If the parameter is of the binary type, the function returns a UTF-8 decoded value. |
toMap(Object) | Converts the value of the Object parameter into a map. The parameter supports the following data types:
|
toArray(Object) | Converts the value of the Object parameter into an array. The parameter supports the following data types:
|
toBinary(Object) | Converts the value of the Object parameter into a binary value. The parameter supports the following data types:
|
Convert time formats
Function | Description |
format_date(timestamp, patten, timeZone) | Converts a timestamp in milliseconds into a time value in a specified format. A string is returned.
|
to_timestamp(dateString, patten, timeZone) | Converts a time value in a specified format into a timestamp in milliseconds. A numeric value is returned.
|
Forward data to destinations
In the following functions, the destinationId parameter specifies the ID of a data destination and the payload parameter specifies the message content.
Function | Description | Example |
writeAmqp(destinationId, payload, tag) | Forwards data to an Advanced Message Queuing Protocol (AMQP) consumer group. tag: This parameter is optional. If you specify a tag, the tag is added to all messages that are forwarded to the AMQP consumer group. The tag must be 1 to 128 characters in length. You can specify a constant or a variable in the tag.
| |
writeDatahub(destinationId, data) | Forwards data to DataHub. data: the data that you want to write to DataHub. Only the map and binary data types are supported. | |
writeFc(destinationId, data) | Forwards data to Function Compute. data: the data that you want to forward to Function Compute. | |
writeKafka(destinationId, payload, key) | Forwards data to ApsaraMQ for Kafka. key: the key that you want to specify in the messages to be forwarded to ApsaraMQ for Kafka. This parameter is optional You can route messages based on the tags on your consumer client. | |
writeMns(destinationId, payload) | Forwards data to Simple Message Queue (formerly MNS) (SMQ). | |
writeMq(destinationId, payload, tag) | Forwards data to ApsaraMQ for RocketMQ. tag: This parameter is optional. If you specify a tag, the tag is added to all messages that are forwarded to ApsaraMQ for RocketMQ. You can filter messages based on tags on your consumer client. The tag must be 1 to 128 characters in length. You can specify a constant or a variable in the tag.
| |
writeTableStore(destinationId, data, flowType) | Forwards data to Tablestore (OTS) instances of the Wide Column model.
| |
writeTableStoreTs(destinationId, timeInUs, metricName, tags, fields, dataSource) | Forwards data to OTS instances of the TimeSeries model.
You can use this function to write data in a line of OTS. To write data in multiple lines at a time, use the following function:
For more information about the parameters, see Overview. | |
writeRds(destinationId, data) | Writes data to an ApsaraDB RDS table. data: the data that you want to write to ApsaraDB RDS. Only the map data type is supported. The key specifies the table column name and the value specifies the column value. | |
updateRds(destinationId, data, condition, limit) | Updates data that is written to an ApsaraDB RDS table.
Examples:
| |
writeTsdb(destinationId, timestamp, metricName, value, tag) | Forwards data to Time Series Database.
| |
writeIotTopic(destinationId, topic, payload) | Forwards data to another topic. Topic: the destination topic to which you want to forward data. The following topics are supported:
The value of the For more information, see Create a data destination. Important If a device does not subscribe to the destination topic, the device cannot receive forwarded data. For example, if you use MQTT.fx to connect Device A to IoT Platform, Device A cannot automatically subscribe to device topics. If Device B forwards data to the For more information, see Automatic topic subscription. | |
writeLindorm(destinationId, timestamp, tags, fields) | Forwards data to Lindorm.
|
Functions that are supported by each basic data type
Map
Function
Description
[Object]
Obtains the value of a specified key.
size()
Obtains the number of key-value pairs in a map.
containsKey(String)
Checks whether a map contains a specified key.
keySet()
Obtains keys in a map. An array is returned.
remove(Object)
Removes a key-value pair from a map based on a specified key.
put(Object, Object)
Adds key-value pairs to a map.
putAll(map)
Adds another map to an existing map.
Array
Function
Description
[int]
Obtains the value at a specified index. The index of the first element in an array is 0.
contains(Object)
Checks whether an array contains a specified element.
remove(Object)
Removes a specified element from an array.
removeAt(int)
Removes an element at a specified index in an array.
add(Object)
Adds an element to the end of an array.
add(index, Object)
Adds an element to a specified index.
addAll(array)
Adds another array to an array.
size()
Obtains the number of elements in an array.
String
Function
Description
substring(start, end)
Extracts a string from the
start
position to theend-1
position.If you do not configure the parameter, the extraction process continues until the end of the string.
length()
Queries the length of a string.
split(String)
Splits a string by using a specified separator.
startsWith(String)
Checks whether a string starts with a specified substring.
endsWith(String)
Checks whether a string ends with a specified substring.
indexOf(String, index)
Queries the position in which a substring first appears from a specified index of a string.
The default value of the index parameter is 0.
Other functions
Function | Description |
endWith(input, suffix) | Checks whether the input string ends with a specified suffix. A Boolean value is returned. |
productKey() | Returns the ProductKey of the current product. |
getDeviceTag(key) | Returns the device tag value of a tag key. If the tag that contains the specified key is not attached to a device, no tag value is returned. |
getOrNull(data, "items", ......) | Returns the value of a specified field in the JSON-formatted data parameter. You can configure one or more fields in the function. Multiple fields must be configured based on levels. The function returns the value of the last field. If the last field does not exist or the field is empty, the function returns null. Example of data:
Examples:
|
payload(textEncoding) | Encodes the message payload that is sent by a device. The textEncoding parameter specifies an encoding scheme.
|
parseNumber(numberString, radix) | Converts a string specified by the numberString parameter into a number based on a number system specified by the radix parameter. The radix parameter is optional. Valid values:
Examples:
|
References
If you want to forward data to a destination, you can write a script by using the supported syntax to call specific functions. For more information, see Script syntax.